Jenkins Pipeline中如何获取环境变量

103次阅读
没有评论

问题描述

在Jenkins的Freestyle项目中定义了许多环境变量,并且这些变量可以在任务的任何部分中使用。用户还使用了ghprb插件来触发针对GitHub Pull Requests的任务,并添加了一些额外的环境变量。后来,用户决定将任务迁移到Jenkins Pipeline中。但是现在的问题是,在Pipeline中无法检索到之前在Freestyle项目中可用的那些环境变量。用户是Jenkins Pipeline的新手,因此决定使用声明性方法来实现目标。所以,问题是如何在Jenkins Pipeline中检索环境变量,例如:${BUILD_CAUSE}, ${ghprbTargetBranch}, ${ghprbActualCommitAuthorEmail}

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

如果你想在声明性Pipeline中使用${VAR}语法来使用环境变量,那么你需要在environment { }块中定义这些变量。
例如:

environment {
    DISABLE_AUTH = 'true'
    DB_ENGINE    = 'sqlite'
}
stages {
    stage('Build') {
        steps {
            echo "Database engine is ${DB_ENGINE}"
            echo "DISABLE_AUTH is ${DISABLE_AUTH}"
            sh 'printenv'
        }
    }
}

如果你想使用来自其他插件的环境变量,那么你需要使用env.VAR语法来访问它们。例如:

echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"

方案2

请注意以下操作注意版本差异及修改前做好备份。
如果你尝试过将变量放入双引号中,但仍然无法解决问题,可以尝试以下方法:

... "${BUILD_CAUSE}"

请注意,这些解决方案适用于声明性Pipeline。如果你使用的是脚本式Pipeline,可能需要使用不同的语法来访问环境变量。

正文完