Jenkins Pipeline emailext:如何在预发送脚本中访问构建对象
Jenkins Pipeline emailext: How to access build object in pre-send script
我正在使用 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变量),但也很感激我当前需要的任何解决方法:
访问工作名称、工作编号和工作区文件夹发送脚本。
您可以像这样在 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 object and the rawBuild
a Run。希望这会有所帮助。
终于找到答案了-
显然对于管道作业中的预发送脚本,build
对象不存在,而 run
对象存在。在我发布这个问题时,它仍然没有记录!
在这个thread
中找到了答案
这让作者更新了 wiki 中的描述:
- run - the build this message belongs to (may be used with FreeStyle or Pipeline jobs)
- build - the build this message belongs to (only use with FreeStyle jobs)
我正在使用 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变量),但也很感激我当前需要的任何解决方法: 访问工作名称、工作编号和工作区文件夹发送脚本。
您可以像这样在 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 object and the rawBuild
a Run。希望这会有所帮助。
终于找到答案了-
显然对于管道作业中的预发送脚本,build
对象不存在,而 run
对象存在。在我发布这个问题时,它仍然没有记录!
在这个thread
中找到了答案这让作者更新了 wiki 中的描述:
- run - the build this message belongs to (may be used with FreeStyle or Pipeline jobs)
- build - the build this message belongs to (only use with FreeStyle jobs)