【问题标题】:Is it possible to link one Jenkins job to another and establish an upstream/downstream relationship?是否可以将一个 Jenkins 工作链接到另一个工作并建立上游/下游关系?
【发布时间】:2014-08-14 16:20:27
【问题描述】:

我需要从一个上游作业生成可变数量的作业。 AFAIK,没有插件可以做到这一点。最接近的是 MultiJob 插件 (https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin)。 所以我想创建一个构建步骤,使用其中一个 Jenkins API(REST、groovy 或 jenkins-cli)来触发这些构建。 但是,如果我这样做,这些构建将变得“分离”(意味着它们没有上游工作)并且主要工作与这些构建没有联系。

所以归结为:是否可以开始一个工作构建并告诉它谁是它的上游?

【问题讨论】:

  • 上游工作需要什么:工件? SVN 改版?工作区?

标签: groovy jenkins


【解决方案1】:

Build Result Trigger 插件。它实际上是 Parameterized Trigger Plugin 的倒数。 Build Result Trigger 不像后者那样触发下游作业,而是让您的“下游”作业监视/监控上游作业的进度,并根据该结果触发。

这样,您的“上游”作业实际上并不知道正在观察它的下游作业。

【讨论】:

  • 谢谢,但我确实需要上游工作来了解孩子,并且需要等到他们全部完成。很高兴知道,但不适合我的问题。
  • 那你触发多个下游项目有什么问题?
  • 请查看我最近的评论,我解释了我的问题是什么以及为什么使用 Groovy 代码不能完全解决它。
【解决方案2】:

查看 Groovy 插件。

它可以让你解雇尽可能多的工作,并设置上游原因。

代码示例: http://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin#Groovyplugin-Retrievingparametersandtriggeringanotherbuild

job.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(params))

【讨论】:

    【解决方案3】:

    一个相关的帖子在这里: How do I dynamically trigger downstream builds in jenkins?

    但是,从我阅读的所有答案中可以清楚地看出,使用 Groovy/Java 类 hudson.model.Cause.UpstreamCause(currentBuild) 确实实现了以编程方式触发另一个作业的目标,但是它没有完全建立上游/下游关系。 当您检查构建时,您看不到任何上游/下游信息。查看这些的唯一方法是打开每个的控制台输出。

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 2014-09-21
      • 2021-07-02
      • 1970-01-01
      相关资源
      最近更新 更多