如何用Groovy脚本在当前流水线完成后触发新流水线并传递参数
解决Jenkins流水线A触发B后持续等待的问题
你当前的问题是:使用build步骤触发流水线B时,流水线A会一直阻塞运行,直到B执行完毕才终止,不符合“A执行成功并终止后触发B”的需求。
问题原因
Jenkins Pipeline的build步骤默认是阻塞式执行的,会等待目标流水线(B)完成所有流程后,才会继续当前流水线(A)的后续逻辑。
解决方法
在build步骤中添加wait: false参数,让流水线A触发B后立即释放资源、终止运行,无需等待B的执行结果。
修改后的代码如下:
stage('Artifactory_Publish_Job') { try { def job = build( job: 'Jfrog_Artifactory_Publish', wait: false, // 关键参数:设置为false即不等待目标流水线完成 parameters: [ [$class: 'StringParameterValue', name: 'buildDateString', value: 'default'], [$class: 'StringParameterValue', name: 'WORKSPACE_DIR', value: 'default'], [$class: 'StringParameterValue', name: 'Artifactory_Directory', value: 'default'] ] ) } catch (any) { throw any } }
补充说明
- 要确保流水线A是执行成功后才触发B,需保证这个
stage是在A的所有核心执行步骤都成功完成后才运行,避免A中途失败却误触发B。 - 若后续需要追踪流水线B的执行状态,不能依赖这个非阻塞式
build的返回值,需通过Jenkins API或其他方式查询(当前需求下无需此操作)。
内容的提问来源于stack exchange,提问作者DevOps__1903
相关产品推荐
相关产品推荐

