Jenkins Pipeline如何基于REST API返回配置动态触发带参构建任务
Jenkins动态触发目标Job实现方案
前置依赖
- 提前安装必备Jenkins插件:
HTTP Request、Pipeline Utility Steps - 执行当前Pipeline的服务账号拥有所有待触发目标Job的构建权限
- 待调用的REST API允许Jenkins服务器网络访问,需鉴权的话提前在Jenkins中配置对应API的访问凭据
完整Pipeline示例
pipeline { agent any stages { stage('获取待执行任务信息') { steps { script { // 调用REST接口获取任务数据,需替换为你的实际API地址 def response = httpRequest url: 'https://your-rest-api-address/task', failOnError: true // 解析返回的JSON结构 def taskInfo = readJSON text: response.content // 处理参数:把接口返回的单键值对参数数组转成Jenkins build步骤接受的Map格式 def jobParams = [:] taskInfo.parameters.each { paramItem -> paramItem.each { key, value -> jobParams[key] = value } } echo "即将触发任务:${taskInfo.jobName},参数:${jobParams}" // 触发目标Job构建 build job: taskInfo.jobName, parameters: jobParams, // 可选配置:不需要等待目标Job执行完成就继续往下走的话改为false wait: true, // 可选配置:目标Job执行失败不中断当前Pipeline的话改为false propagate: true } } } } }
常见注意事项
- 如果目标Job存放在Jenkins文件夹下,
jobName需要填写完整路径,例如业务测试组/前端项目/tzach_job1 - 若待触发Job是无参数Job,接口返回空
parameters数组也可以正常执行触发 - 如果调用的REST API需要身份认证,可以在
httpRequest步骤添加authentication: 'Jenkins中存储的API凭据ID'参数完成鉴权 - 如果需要并行触发多个任务,可以把build步骤放入
parallel块中执行
内容的提问来源于stack exchange,提问作者Tzach Solomon
相关产品推荐
相关产品推荐

