J'ai essayé toutes sortes de méthodes, mais rien ne semble fonctionner. Voici mon 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]]
}
}
}
}
La sortie du script de l'étape en phase ('Initialiser les variables') ne me donne rien, elle ne définit pas la valeur de la variable globale Zip_NODE:
[Pipeline] stage
[Pipeline] { (Initialize the variables)
[Pipeline] script
[Pipeline] {
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
Et puis nous passons à l’étape (code - Build), nous n’obtenons pas la valeur de Zip_NODE. Voir la déclaration d'écho à 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
Grâce à @awefsome, j’ai eu quelques observations que je voudrais ajouter plus en détail: Lorsque j’utilise le code ci-dessous, j’obtiens la sortie souhaitée, c’est-à-dire la valeur correcte de 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"
}
}
Mais quand j'utilise le code ci-dessous, je n'obtiens pas la valeur de 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
'''
}
}
Essayez de suivre et voir comment ça se passe:
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]]
}
}
}
}
J'ai la sortie suivante:
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
sh '''
'''
devrait être
sh """
"""
avec des guillemets simples, les variables ne sont pas traitées.