我正在尝试在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=
属性,我们可以像使用Java一样读取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脚本中的Pipeline作业中。我正在尝试Pipeline作业,当我让它工作后,将使其成为具有Jenkinsfile
的多分支Pipeline。
JOB_NAME
被提及为一个特殊的 Jenkins 变量,应该已经被定义好了。 - David W.