【问题标题】:Jenkins/Hudson upstream job does not get the status "ball" color of the downstream jobsJenkins/Hudson 上游作业没有获得下游作业的状态“球”颜色
【发布时间】:2011-09-02 17:12:03
【问题描述】:

我有一个上游作业,它执行 4 个下游作业。

如果上游作业成功完成,下游作业开始执行。

上游作业,因为它成功完成,得到一个蓝色球(构建结果=稳定),但即使下游作业失败(红色球)或不稳定(黄色球),上游作业仍保持其蓝色。

有没有办法让上游作业的结果依赖于下游作业?我的意思是,如果三个下游作业获得了稳定的构建,但其中一个获得了不稳定的构建,那么上游的构建结果应该是不稳定的。

【问题讨论】:

标签: continuous-integration hudson jenkins hudson-plugins


【解决方案1】:

也许这个插件可以满足您的需求?

Jenkins Prerequisite build step Plugin

【讨论】:

    【解决方案2】:

    我的项目的解决方法是创建一个新工作,这是下游的下游。我们在所有三个原始下游作业中设置了一个后期构建步骤“触发其他项目的参数化构建”。解析成新作业的参数取决于三个作业的状态,该参数会导致新作业做出相应的反应。

    1. 创建一个包含一个简单类和一个简单测试的新作业。两个参数都依赖,即如果参数"status" = fail,则类失败,如果参数"status"=unstable,则类通过但测试失败,等等。

    2. 为三个原始下游作业在其他项目上设置触发参数化构建,并进行相关配置。

    3.相应地设置新工作的通知。

    【讨论】:

      【解决方案3】:

      我找到了解决方案。有一个名为 Groovy Postbuild pluging 的插件,可让您在后期构建阶段执行 Groovy 脚本。 在下游作业中添加一个简单的代码,您可以修改上游的整体状态。

      这是你需要添加的代码:

      upstreamBuilds = manager.build.getUpstreamBuilds();
      
      upstreamJob = upstreamBuilds.keySet().iterator().next();
      
      lastUpstreamBuild = upstreamJob.getLastBuild();
      
      if(lastUpstreamBuild.getResult().isBetterThan(manager.build.result)) {
          lastUpstreamBuild.setResult(manager.build.result);
      }
      

      您可以在我的blog here 的条目中找到更多信息。

      【讨论】:

        【解决方案4】:

        另一个可能对您有用的选项是使用参数化构建插件。它允许您将 4 个“下游”构建作为构建步骤。这意味着如果任何子构建失败,您的“父”构建可能会失败。

        当我们想要隐藏 build-pipeline 插件视图的复杂性时,我们会这样做。

        【讨论】:

        • 你好,谢谢你的回答,但是,你能解释一下你的意思吗?,如果下游作业,我不明白如何使用该插件使父级失败失败。谢谢!
        【解决方案5】:

        我们遇到了类似的问题,但还没有找到完美的解决方案。部分解决方案是使用Promoted Builds Plugin。为您的上游项目配置它以在下游作业完成时包含一些视觉指示器。它不会改变整体作业状态,但会在下游作业失败时通知我们。

        【讨论】:

          猜你喜欢
          • 2020-09-08
          • 1970-01-01
          • 2023-03-18
          • 2019-04-06
          • 2011-09-18
          • 2014-12-18
          • 2011-08-06
          • 2014-07-14
          • 1970-01-01
          相关资源
          最近更新 更多