如何获取Jenkins中被其他作业触发的Job的Build ID及参数传递方法
Jenkins跨Job传递构建ID与自定义变量实现方案
获取Job B的Build ID并传递给Job C
你直接通过Jenkins内置的build步骤调用下游Job即可,该步骤的返回值就是下游Job的构建实例对象,可直接读取构建ID等信息,示例写法如下:
pipeline { agent any stages { stage('执行Job B并调用Job C') { steps { script { // 调用Job B,wait:true表示等待Job执行完成,propagate:true表示Job B失败时自动终止当前Job def jobBRun = build job: 'Job B', wait: true, propagate: true // 读取Job B的构建ID def jobBBuildId = jobBRun.getNumber() echo "Job B执行成功,构建ID为:${jobBBuildId}" // 调用Job C时将构建ID作为参数传入 build job: 'Job C', parameters: [ string(name: 'some_var_used_in_Job_C', value: jobBBuildId.toString()) ], wait: true } } } } }
如果不需要Job B失败时自动终止当前Job,可以把propagate设置为false,自行通过jobBRun.getResult() == 'SUCCESS'判断执行结果后再走后续逻辑。
从Job B回传自定义变量到Job A
完全可以,有两种常用实现方式:
- 少量变量直接通过构建环境变量传递:Job B的Jenkinsfile中把需要回传的值写入环境变量,Job A中通过构建实例的
buildVariables属性直接读取即可。
示例:Job B的Jenkinsfile中添加env.CUSTOM_PARAM = "需要传递的自定义值",Job A中直接用jobBRun.buildVariables.CUSTOM_PARAM就能拿到该值。 - 大量结构化数据通过归档文件传递:Job B中把需要传递的内容写入json/properties等格式的文件,通过
archiveArtifacts归档该文件;Job A拿到Job B的构建ID后,用copyArtifacts步骤从对应构建中拉取文件,解析后即可得到所有需要的值。
注意事项
- 确保Job A的执行服务账号拥有Job B、Job C的构建权限和构建结果读取权限。
- 若Job B在其他Jenkins文件夹下,调用时需要写全路径,比如
build job: 'folder1/Job B'。
内容的提问来源于stack exchange,提问作者Aayush
相关产品推荐
相关产品推荐

