当前位置: 首页 > 面试题库 >

如果正在等待新版本构建,如何迫使Jenkins跳过下游工作?

茅才
2023-03-14
问题内容

我在詹金斯(Jenkins)的构建管道分为三个工作:

  1. 建立程式码
  2. 将代码部署到环境
  3. 运行自动化功能测试

我已经对其进行了设置,以便可以同时进行构建,并且如果#2或#3当前正在为另一个构建运行,则构建管道将阻止构建进入#2。

我想要做的是设置Jenkins来处理有多个构建等待,并且#2和#3完成的情况,只有最新的构建才能进入#2和#3。

有没有一种方法可以做到这一点?如果您有一本书《持续交付》,那么我想做的就是实现第25页的内容。118-页 119


问题答案:

应该尝试其中一种,在“ 高级项目选项”下

  • 当上游项目正在构建时阻止构建
    (应确保它不会导致步骤2和3陷入队列)

  • 在下游项目正在构建时阻止构建
    (我知道这听起来与您的要求相反,
    但是实际结果是您将更改累积到一个构建周期中,
    从而避免了额外的运行)

如果这导致不必要的构建堆积,
请查看以下链接,这些链接可以帮助您
清空队列或终止正在运行的作业:

  • 万一开始新的工作,请停止Jenkins的工作 (由[ malenkiy_scot])

  • 清除构建队列插件

  • 信号杀手

  • 杀死所有建筑物 (由 川口浩辅 提供)

        import hudson.model.*;

    Hudson.instance.computers.each { c ->
      c.executors.each { e ->
         e.interrupt();
      } 
    }


 类似资料:
  • 问题内容: 我们想动态地触发詹金斯中不同下游版本中的集成测试。我们有一个参数化的集成测试项目,该项目将测试名称作为参数。我们从git repo动态确定测试名称。 我们有一个父项目,该项目使用jenkins-cli为源代码中发现的每个测试启动集成项目的构建。父项目和集成项目通过匹配的指纹相关联。 这种方法的问题是汇总测试结果不起作用。我认为问题在于“下游”集成测试是通过jenkins-cli启动的,

  • 我的用例是,我希望每个构建/运行的工件都有一个唯一的版本号。对于CircleCI、Travis等当前工具,有一个可用的构建编号,它基本上是一个不断上升的计数器。因此,我可以创建版本字符串,如0.1.0-27。即使对于相同的提交,此计数器也会每次增加。 如何使用GitHub Actions做类似的事情?Github操作只提供GITHUB_SHA和GITHUB_REF。

  • 这个问题是针对开源vscode(在MIT许可下),而不是VS代码。我花了昨天的时间试图找出如何构建某种发布版本。我的意思是,就像在VisualStudio中一样,我们有“调试”和“发布”构建。我是C#开发者,可以这样说,vscode都是基于web技术的。在大学里做过一些javascript,现在是历史。我不知道从哪里开始。有人能给我指出正确的方向和学习的内容吗?对于初学者来说,如何使用自定义exe

  • 问题内容: 我在詹金斯(Jenkins)有2个工作: 建立并运行单元测试 (构建并)运行集成测试 Job-2 是 Job-1 的下游项目。 Job-1 在其上启动构建并运行单元测试。 Job-2 也会启动构建并运行集成测试。 我想更改它, 并使 Job-2 在由 Job-1 启动的结果构建上运行测试。 问题答案: 您可以使用Copy Artifact插件,并使用Job-2中的Job-1工件对它们进

  • 我有一个构建项目,在其中我实现了Cucumber BDD,并编写了功能文件和测试类。现在,我想要的是在构建过程中

  • 问题内容: 是否可以通过系统Groovy脚本获取Jenkins中的RUNNING构建的列表?我尝试遍历繁忙的执行程序,但是从执行程序对象中,我无法获得构建对象: 我也可以像这样定位我感兴趣的工作: 但是然后我将不得不遍历100多个(如果不是更多的话)构建,并询问每个构建是否正在运行。 必须有一种更容易/更好的方法来获取正在运行的构建列表。 关于如何通过System Groovy脚本(我写了其中的一