我有以下Jenkinsfile。
lat: 52.3679843
lng: 4.9035614
我无法在第3阶段获取版本,当然我可以在主管道中定义该版本,但是如您所见,我在其中一个阶段获取变量值,因此对我不起作用。
还有其他方法可以在舞台外部访问 version 环境变量吗?
答案 0 :(得分:1)
environment
阶段中的Fetch version
块将env.version
变量的范围限制为仅此阶段。但是,如果要在一个阶段中将值存储在环境变量中,并在下一个阶段中访问该变量,则必须在script
块内分配它,例如:
pipeline {
agent any
stages {
stage('Generate script') {
steps {
script {
sh 'sh generate_version.sh new_version.log'
}
}
}
stage('Fetch version') {
steps {
script {
// here we create `env.version` variable that can be access in the later stages
env.version = sh(returnStdout: true, script: '''sh grep version: ''').trim()
sh 'echo "do something: $version"'
}
}
}
stage('use the version') {
steps {
script {
sh "echo $version"
}
}
}
}
}
您还可以使用简写形式,并为version
而不是env.version
分配一个值,但这是一个隐式绑定,将其显式表示可以使您的意图更加直接。值得一提的另一件事-当您要正确地内插$version
变量时,请使用双引号。单引号将按原样打印文本。