Jenkinsfile变量用于两个单独的阶段
我有一个管道作业,它使用两个单独的节点(一个用于构建,一个用于测试),我想在我的Jenkinsfile变量用于两个单独的阶段,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,我有一个管道作业,它使用两个单独的节点(一个用于构建,一个用于测试),我想在我的Jenkinsfile中的两个代码块之间共享一个变量。我认为这是可能的,但我对groovy和Jenkinsfile概念非常陌生。以下是迄今为止的相关代码: 节点('build'){ 阶段(“签出”){ 校验scm } 阶段(‘构建’){ bat(脚本:“构建”) def rev=readFile('结果') } } 节点('测试'){ 阶段(“测试”){ def SDK_VERSION=“5.0.0001.${rev
Jenkinsfile
中的两个代码块之间共享一个变量。我认为这是可能的,但我对groovy和Jenkinsfile
概念非常陌生。以下是迄今为止的相关代码:
节点('build'){
阶段(“签出”){
校验scm
}
阶段(‘构建’){
bat(脚本:“构建”)
def rev=readFile('结果')
}
}
节点('测试'){
阶段(“测试”){
def SDK_VERSION=“5.0.0001.${rev}”
bat“test.cmd${env.BUILD\u URL}${SDK\u VERSION}”
archiveArtifacts工件:“工件/***/.xml”
junit“artifacts/***.xml”
}
}
我想在构建阶段分配“rev”变量,然后在测试阶段将其连接到SDK_版本变量。我的错误是:
groovy.lang.MissingPropertyException: No such property: rev for class: groovy.lang.Binding
只需在
节点
块之前定义变量:
def rev = ''
node('build') {
stage('Checkout') {
checkout scm
}
stage('Build') {
bat(script: 'build')
rev = readFile('result')
}
}
在声明性管道中,@mkobit的答案不起作用。但是,您可以显式切换到脚本模式并使用其作用域,例如:
...
steps {
script {
def foo = sh script: "computeFoo", returnStdout: true
node('name') {
script {
someStep()
}
}
}
}
...
我想您可以在
节点
外部使用def rev=”“
定义rev
块。然后它在全局上下文中,可以在节点
块中使用。我想一定有办法使它全局化,但每次我查找它时,资源都指向设置全局环境变量。我还只是想确保我正确地使用它。非常感谢。