I have tried all sort of ways but nothing seems to be working. Here is my jenkinsfile.
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]] } } } }
The output of step script in stage ('Initialize the variables') gives me nothing, It is not setting the value of global variable ZIP_NODE:
[Pipeline] stage [Pipeline] { (Initialize the variables) [Pipeline] script [Pipeline] { [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage
And then we go to stage (code - Build) we do not get the value of ZIP_NODE. See echo statement at 22:34:17
[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
Thanks to @awefsome, I had some observation which I would like add in details: When I use below code I get desired output i.e. correct value of 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" } }
But when I use below code I do not get the value of 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 ''' } }
To access the Jenkins environment variables in a pipeline, you can use the env object, eg. env.BUILD_NUMBER will give the current build number of a pipeline. The reference to Jenkins pipeline environment variables is made by surrounding it by ${} in the following way: ${env.BUILD_NUMBER}
After installing, in your job choose Add Parameter and select Global Variable String Parameter. Use $VARIABLE or ${VARIABLE} in either the default value or on the build now page to substitute global node parameters.
Jenkins Environment Variable is a global variable exposed through the env variable and used anywhere in the Jenkins file. Any value stored in the env variable gets stored as a String type. Environment Variables can be set either at the pipeline top level, at the specific stage level, or inside the script block.
sh ''' '''
should be
sh """ """
with single quotes the variables don't get processed.
Try following and see how it goes:
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]] } } } }
I got following output:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With