一尘不染

Jenkins Pipeline访问环境变量

jenkins

我正在尝试在Jenkins中使用DSL管道。我认为如果可以将项目名称用作脚本的一部分,那就太好了。

git credentialsId: 'ffffffff-ffff-ffff-ffff-ffffffffffffff',\
url: "${repo_root}/${JOB_NAME}.git"

我得到错误:

groovy.lang.MissingPropertyException: \
No such property: JOB_NAME for class: groovy.lang.Binding

我以为我遵循了这些指示,并且将其JOB_NAME作为变量之一。

我决定尝试:

sh 'env'

在我的DSL中,结果显示为:

JOB_NAME = foo-bar

这是我所期望的。

另一个博客提到

使用环境变量

我们有两种方法来获取它们的价值。-D=在启动过程中传递的属性,System.getProperty("key")由于Groovy与Java的紧密联系,我们可以理解为。

以Java方式读取普通环境变量是System.getenv("VARIABLE")

让我们尝试一下:

println "JOB_NAME = " + System.getenv('JOB_NAME');

现在,我得到:

java.lang.NullPointerException: Cannot get property 'System' on null object

空对象?但是,我可以看到这JOB_NAME是一个环境变量!

如何$JOB_NAME在管道作业中将DSL脚本读入。我正在尝试管道作业,当我得到该工作时,将使它成为具有的多分支管道Jenkinsfile


阅读 1203

收藏
2020-07-25

共1个答案

一尘不染

所有的环境变量使用访问env,如${env.JOB_NAME}

2020-07-25