根据另一个作业的状态运行 Jenkins 作业
Posted
技术标签:
【中文标题】根据另一个作业的状态运行 Jenkins 作业【英文标题】:Run Jenkins Job Based on Another Job's Status 【发布时间】:2017-06-25 18:43:07 【问题描述】:我有许多不同的项目,为每个项目配置了 Jenkins CI 作业以运行测试。当我创建一个新版本时,我有第二个工作在多个不同工作之间进行协调,这些工作遍历项目中的每个模块并更新 pom.xml 中的版本和依赖项。我想让“更新”作业以所有 CI 作业的状态为条件 - 这意味着如果其中一个 CI 作业不是绿色的,那么更新作业将根本不会运行。
我查看了Run Condition Plugin 和Conditional BuildStep Plugin,但似乎不可能将它们配置为依赖于另一个 Jenkins 作业的状态。
【问题讨论】:
【参考方案1】:您可以通过[JOB_URL]/lastCompletedBuild/api/json
的API 找到其他工作,并验证每个工作的result
。
解决这个问题:
curl `[JOB_URL]/lastCompletedBuild/api/json` | jq '.result'
你可能想让result
说SUCCESS
。
这并不花哨,但你不想在 CI 中花哨;你想要升级詹金斯时不太可能破坏的东西。 :)
【讨论】:
【参考方案2】:有一个 [https://wiki.jenkins.io/display/JENKINS/Multijob+Plugin] ["Multijob Plugin"] ,
在您的情况下,您可以在第一步中添加一个作业并在该步骤中配置,在第一步的结果条件下,您想要运行第二步。 同样,在第二步中,您可以配置一个/多个作业,也可以配置是否要并行运行它们。
【讨论】:
以上是关于根据另一个作业的状态运行 Jenkins 作业的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Grafana 中构建显示 Jenkins 作业状态的仪表板?
将扩展选择参数值从一个作业传递到 Jenkins 管道中的另一个远程作业