我正在使用Jenkins版本。 2.150.1,并具有一些自由式作业和一些管道作业。 在这两种工作类型中,我都使用带有模板和预发送脚本的emailext插件。
在自由样式项目中可用的 build 变量在管道项目中似乎为 null 。
以下是预发送脚本(仅作为示例,我的脚本更复杂):
msg.setSubject(msg.getSubject() + " [" + build.getUrl() + "]")
msg变量没有问题。 在自由样式作业中,此脚本将构建URL添加到邮件主题。 在管道作业中,作业控制台中提供了以下内容:
java.lang.NullPointerException: Cannot invoke method getUrl() on null object
管道作业中对emailext的调用是:
emailext body: '${SCRIPT, template="groovy-html.custom.pipeline.sandbox.template"}',
presendScript: '${SCRIPT, template="presend.sandbox.groovy"}',
subject: '$DEFAULT_SUBJECT',
to: 'user@domain.com'
我宁愿找到解决此问题的一般方法(即在管道预发送脚本中访问 build 变量),但也希望我能采取任何解决方法当前需求: 在管道预发送脚本中访问职位名称,职位编号和工作区文件夹。
答案 0 :(得分:0)
您可以像这样在script中访问build
:
// findUrl.groovy
def call(script) {
println script.currentBuild.rawBuild.url
// or if you just need the build url
println script.env.BUILD_URL
}
并从管道中调用如下脚本:
stage('Get build URL') {
steps {
findUrl this
}
}
currentBuild
给您一个RunWrapper对象,而rawBuild
给您一个Run。希望这会有所帮助。
答案 1 :(得分:0)