繁体   English   中英

詹金斯-下游提交触发上游工作

[英]Jenkins - downstream commit triggers upstream job

我需要一种解决方案,该解决方案应提供一种方法,以在存储库发生更改(新提交)时触发上游作业,从而触发下游作业。

让我们想象一下:有4个工作:A,B,C,D。

B,C,D是通过提交到其(单个)存储库(通过轮询SCM触发)而触发的(单个)

现在我希望作业A触发所有作业:B,C,D。

但是我希望作业A仅在对B或C或D进行新提交时才触发B,C和D。

我该如何实现? 我想保留B,C和D职位。

您必须将作业A设置为轮询B,C和D存储库的SCM。 然后在构建作业A之后,使用构建触发器设置作业B,C和D。 您可能希望从作业B,C和D中删除自动轮询,否则A和相应的B,C,D作业都会触发,并且您将获得重复运行。

但是,无论何时对三个存储库中的任何一个进行提交,上述解决方案都将始终触发作业B,C和D。 如果仅要触发针对其提交的各个作业,则必须在作业A中添加其他逻辑以检测要触发的作业。 在这种情况下,您不想在作业B,C,D中添加触发器以在作业A之后进行构建。相反,在作业A中,您想要添加构建后操作以根据特定条件来构建其他项目(可能使用条件BuildStep插件 )。 需要使用其他一些程序化构建步骤(常规代码,shell脚本等)来设置条件。

要解决您的问题,可以使用Multiple SCMs Plugin

它将允许作业A使用多个SCM来源:

  • 回购B
  • 回购C
  • 回购D

接下来,您只需要在作业A上设置cron表达式即可合并这些存储库。

Multijob插件在主作业上具有一个选项,可以轮询SCM的子作业。

多作业轮询

如果将A作业设置为多作业,则可以启用此设置,然后将作业B,C和D添加为要依次或并行执行的作业阶段。 如果您愿意,甚至可以告诉它不要构建B,C或D,如果它们的SCM没有更改。

您仍然仍然可以添加常规构建步骤,因此可以在启动B,C和D阶段之前执行作业A中的原始步骤。

重要的是要注意,使用Multijob插件要求主作业在其子作业运行时正在执行。 这意味着您在系统上至少需要2个执行程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM