从Jenkinsfile的另一个阶段调用环境变量

时间:2019-04-27 04:27:29

标签: jenkins groovy jenkins-pipeline jenkins-groovy

我有以下Jenkinsfile。

lat: 52.3679843
lng: 4.9035614

我无法在第3阶段获取版本,当然我可以在主管道中定义该版本,但是如您所见,我在其中一个阶段获取变量值,因此对我不起作用。

还有其他方法可以在舞台外部访问 version 环境变量吗?

1 个答案:

答案 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变量时,请使用双引号。单引号将按原样打印文本。