问题描述
在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,可能需要使用不同的语法来访问环境变量。
正文完