Jenkins Pipeline中如何获取被触发任务的Build URL
解决方案
你调用build步骤触发子任务后返回的RunWrapper对象本身就已包含子任务的构建相关属性,直接从该对象获取对应URL即可。你出现报错是因为直接调用了当前父流水线上下文不存在的absoluteUrl变量,而非从子任务返回对象取值。
另外需要注意:默认build步骤在子任务构建失败时会直接抛出异常终止父流水线,无法进入你后续的失败判断逻辑,需要添加propagate: false参数关闭该特性。
修改后的完整代码如下:
script { // 新增propagate: false参数,子任务失败不直接终止父流水线 def job = build job: '<job>', propagate: false if (job.getResult().equals('FAILURE')) { def jobName = '<job>' def date = new Date().format('dd/MM/yyyy') echo "Build Result: " + job.getResult() // 从子任务返回的job对象取absoluteUrl slackSend color: "danger", message: "${jobName} failed on " + date + "\n Build URL - ${job.absoluteUrl}" } else { echo "Build Result: " + job.getResult() } }
补充说明
RunWrapper对象除了absoluteUrl外,还可以获取number(子任务构建号)、duration(子任务构建时长)等常用属性,按需调用即可。- 如果你的Jenkins版本较低无法直接取
absoluteUrl属性,也可以手动拼接:${JENKINS_URL}${job.getId()},注意JENKINS_URL需要在Jenkins系统配置中提前设置好根地址。
内容的提问来源于stack exchange,提问作者Swaroop Joseph
相关产品推荐
相关产品推荐

