根据另一个作业的状态运行 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'

你可能想让resultSUCCESS

这并不花哨,但你不想在 CI 中花哨;你想要升级詹金斯时不太可能破坏的东西。 :)

【讨论】:

【参考方案2】:

有一个 [https://wiki.jenkins.io/display/JENKINS/Multijob+Plugin] ["Multijob Plugin"] ,

在您的情况下,您可以在第一步中添加一个作业并在该步骤中配置,在第一步的结果条件下,您想要运行第二步。 同样,在第二步中,您可以配置一个/多个作业,也可以配置是否要并行运行它们。

【讨论】:

以上是关于根据另一个作业的状态运行 Jenkins 作业的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Grafana 中构建显示 Jenkins 作业状态的仪表板?

你可以将环境变量传递给xcodebuild吗?

将扩展选择参数值从一个作业传递到 Jenkins 管道中的另一个远程作业

如何从另一个jenkins(本地)调用1个jenkins(远程jenkins)中配置的作业

如何从 Jira 中的状态更改触发 Jenkins 作业

如何在jenkins中启动另一个作业时获取内部错误消息