[英]How to change a Jenkins Declarative Pipeline environment variable?
我正在嘗試創建一些Docker鏡像。 為此,我想使用Maven pom.xml文件中指定的版本號作為標記。 然而,我對聲明性Jenkins管道很新,我無法弄清楚如何更改我的環境變量,以便VERSION包含所有階段的正確版本。
這是我的代碼
#!groovy
pipeline {
tools {
maven 'maven 3.3.9'
jdk 'Java 1.8'
}
environment {
VERSION = '0.0.0'
}
agent any
stages {
stage('Checkout') {
steps {
git branch: 'master', credentialsId: '290dd8ee-2381-4c5b-8d33-5631d03ee7be', url: 'git@gitlab.crosslang.local:company/SOME-API.git'
sh "git clean -f && git reset --hard origin/master"
}
}
stage('Build and Test Java code') {
steps {
script {
def pom = readMavenPom file: 'pom.xml'
VERSION = pom.version
}
echo "${VERSION}"
sh "mvn clean install -DskipTests"
}
}
stage('Build Docker images') {
steps {
dir('whales-microservice/src/main/docker'){
sh 'cp ../../../target/whales-microservice-${VERSION}.jar whales-microservice.jar'
script {
docker.build "company/whales-microservice:${VERSION}"
}
}
}
}
}
}
問題是聲明的單引號
sh 'cp ../../../target/whales-microservice-${VERSION}.jar whales-microservice.jar'
單引號不會在groovy中擴展變量: http : //docs.groovy-lang.org/latest/html/documentation/#_string_interpolation
所以你必須雙引用你的shell語句:
sh "cp ../../../target/whales-microservice-${VERSION}.jar whales-microservice.jar"
我只是想提一下,如果你安裝了pipeline-utility-steps
插件,你也可以在環境部分使用readMavenPom()
。 它看起來像這樣:
environment {
VERSION = readMavenPom().getVersion()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.