How to trigger parameterized build on successful build in Jenkins?
我有三个管道项目,项目-a、项目-b 和项目-c。 project-c 接受一个参数。在成功完成 project-a 或 project-b 后,我想使用参数触发 project-c 的构建。
我可以在 project-a 和 project-b 中使用以下代码在管道中执行此操作:
1 2 3 | stage('trigger-project-c') { def job = build job: 'project-c', parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: 'somevalue']] } |
但这需要两个执行者。我希望 project-a 或 project-b 在使用参数运行 project-c 之前完全完成。
您的管道很可能如下所示:
1 2 3 4 5 6 7 8 9 10 11 | node { stage('build') { // sh"make" } // ... stage('trigger-project-c') { def job = build job: 'project-c', parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: 'somevalue']] } } |
通过将所有内容package在
因此,长时间基本上什么都不做的事情不应该被package在
相反,您的管道应该看起来像如下,这是 - 可以说 - 最佳实践(因为你不会阻止你的执行者):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | stage('build') { node { // sh"make" } } // or node { stage('build') { // sh"make" } stage('unit') { // sh"make" } } // node // note: the following code is _not_ wrapped inside a `node` step stage('trigger-project-c') { def job = build job: 'project-c', parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: 'somevalue']] } |
没有必要将
将参数
编辑:如果您不关心此管道的其他下游作业的成功,这将有所帮助。如果您需要等到它完成后再继续自己的(上游作业)管道,请参阅我的其他答案。