我尝试了各种方式,但似乎没有任何效果。这是我的詹金文件。
def ZIP_NODE def CODE_VERSION pipeline{ /*A declarative pipeline*/ agent { /*Agent section*/ // where would you like to run the code label 'ubuntu' } options{ timestamps() } parameters { choice(choices: ['dev'], description: 'Name of the environment', name: 'ENV') choice(choices: ['us-east-1', 'us-west-1','us-west-2','us-east-2','ap-south-1'], description: 'What AWS region?', name: 'AWS_DEFAULT_REGION') string(defaultValue: "", description: '', name: 'APP_VERSION') } stages{ /*stages section*/ stage('Initialize the variables') { // Each stage is made up of steps steps{ script{ CODE_VERSION='${BUILD_NUMBER}-${ENV}' ZIP_NODE='abcdefgh-0.0.${CODE_VERSION}.zip' } } } stage ('code - Checkout') { steps{ checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxxxxxxxxxxxxxxxxxxxxxxxx', url: 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.git']]]) } } stage ('code - Build'){ steps{ sh ''' echo ${JOB_NAME} pwd echo ${ZIP_NODE} echo 'remove alraedy existing zip files' rm -rf *.zip zip -r ${ZIP_NODE} . chmod 777 $ZIP_NODE ''' } } stage('Deploy on Beanstalk'){ steps{ build job: 'abcdefgh-PHASER' , parameters: [[$class: 'StringParameterValue', name: 'vpc', value: ENV], [$class: 'StringParameterValue', name: 'ZIP_NODE', value: ZIP_NODE], [$class: 'StringParameterValue', name: 'CODE_VERSION', value: CODE_VERSION], [$class: 'StringParameterValue', name: 'APP_VERSION', value: BUILD_NUMBER], [$class: 'StringParameterValue', name: 'AWS_DEFAULT_REGION', value: AWS_DEFAULT_REGION], [$class: 'StringParameterValue', name: 'ParentJobName', value: JOB_NAME]] } } } }
阶段脚本的输出(“初始化变量”)没有任何作用,它没有设置全局变量ZIP_NODE的值:
[Pipeline] stage [Pipeline] { (Initialize the variables) [Pipeline] script [Pipeline] { [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage
然后我们进入阶段(代码-Build),我们没有得到ZIP_NODE的值。请参阅22:34:17的echo声明
[Pipeline] stage [Pipeline] { (code - Build) [Pipeline] sh 22:34:16 [abcdefgh-ci-dev-pipeline] Running shell script 22:34:17 + echo abcdefgh-ci-dev-pipeline 22:34:17 abcdefgh-ci-dev-pipeline 22:34:17 + pwd 22:34:17 /home/advisor/Jenkins/workspace/abcdefgh-ci-dev-pipeline 22:34:17 + echo 22:34:17 22:34:17 + echo remove alraedy existing zip files
感谢@awefsome,我有一些观察,我想补充一下细节:当我使用下面的代码时,我得到了想要的输出,即ZIP_NODE的正确值:
stage ('code - Build'){ steps{ sh "echo ${JOB_NAME} && pwd && echo ${ZIP_NODE} && echo 'remove alraedy existing zip files' && rm -rf *.zip && zip -r ${ZIP_NODE} . && chmod 777 $ZIP_NODE" } }
但是,当我使用下面的代码时,我没有得到ZIP_NODE的值:
stage ('code - Build'){ steps{ sh ''' echo ${ZIP_NODE} echo ${JOB_NAME} pwd echo ${ZIP_NODE} echo ${CODE_VERSION} #rm -rf .ebextensions echo 'remove alraedy existing zip files' rm -rf *.zip zip -r ${ZIP_NODE} . chmod 777 $ZIP_NODE ''' } }
尝试遵循并查看进展情况:
def ZIP_NODE def CODE_VERSION pipeline{ /*A declarative pipeline*/ agent { /*Agent section*/ // where would you like to run the code label 'master' } options{ timestamps() } parameters { choice(choices: ['dev'], description: 'Name of the environment', name: 'ENV') choice(choices: ['us-east-1', 'us-west-1','us-west-2','us-east-2','ap-south-1'], description: 'What AWS region?', name: 'AWS_DEFAULT_REGION') string(defaultValue: "", description: '', name: 'APP_VERSION') } stages{ /*stages section*/ stage('Initialize the variables') { // Each stage is made up of steps steps{ script{ CODE_VERSION="${BUILD_NUMBER}-${ENV}" ZIP_NODE="abcdefgh-0.0.${CODE_VERSION}.zip" } } } stage ('code - Checkout') { steps{ println "checkout skipped" //checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxxxxxxxxxxxxxxxxxxxxxxxx', url: 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.git']]]) } } stage ('code - Build'){ steps{ sh "echo ${JOB_NAME} && pwd && echo ${ZIP_NODE} && echo 'remove alraedy existing zip files' && rm -rf *.zip && zip -r ${ZIP_NODE} . && chmod 777 $ZIP_NODE" } } stage('Deploy on Beanstalk'){ steps{ println "build job skipped" //build job: 'abcdefgh-PHASER' , parameters: [[$class: 'StringParameterValue', name: 'vpc', value: ENV], [$class: 'StringParameterValue', name: 'ZIP_NODE', value: ZIP_NODE], [$class: 'StringParameterValue', name: 'CODE_VERSION', value: CODE_VERSION], [$class: 'StringParameterValue', name: 'APP_VERSION', value: BUILD_NUMBER], [$class: 'StringParameterValue', name: 'AWS_DEFAULT_REGION', value: AWS_DEFAULT_REGION], [$class: 'StringParameterValue', name: 'ParentJobName', value: JOB_NAME]] } } } }
我得到以下输出:
Started by user jenkins Running in Durability level: MAX_SURVIVABILITY [Pipeline] node Running on Jenkins in /Users/Shared/Jenkins/Home/workspace/test [Pipeline] { [Pipeline] timestamps [Pipeline] { [Pipeline] stage [Pipeline] { (Initialize the variables) [Pipeline] script [Pipeline] { [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (code - Checkout) [Pipeline] echo 21:19:06 checkout skipped [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (code - Build) [Pipeline] sh 21:19:06 [test] Running shell script 21:19:06 + echo test 21:19:06 test 21:19:06 + pwd 21:19:06 /Users/Shared/Jenkins/Home/workspace/test 21:19:06 + echo abcdefgh-0.0.17-dev.zip 21:19:06 abcdefgh-0.0.17-dev.zip 21:19:06 + echo 'remove alraedy existing zip files' 21:19:06 remove alraedy existing zip files 21:19:06 + rm -rf '*.zip' 21:19:06 + zip -r abcdefgh-0.0.17-dev.zip . 21:19:06 21:19:06 zip error: Nothing to do! (try: zip -r abcdefgh-0.0.17-dev.zip . -i .) [Pipeline] } [Pipeline] // stage