在运行Jenkins管道脚本时,如何确定后续步骤的优先级?

时间:2017-05-30 20:05:29

标签: jenkins continuous-integration jenkins-pipeline

假设我有两个类似的简单管道脚本,每个脚本基本上都是这样的:

stage('only stage') {
    node {
      // first step
    }

    node {
     // second step
    }
}

让我们调用我的第一个脚本A和B中的步骤,以及我类似的第二个脚本C和D中的步骤。

我从测试中理解它的方式,当我为这些脚本启动构建时,Jenkins似乎只从每个脚本排队第一步,然后仅在第一步完成时排队下一步。因此,它似乎有利于管道中的早期运行步骤。考虑这个映射我已经采取的行动的例子=>生成的Jenkins队列步骤:

  

启动脚本1 => [A]

     

启动脚本2 => [A,C]

     

A starts => [C]

     

A完成=> [C,B]

     

C starts => [B]

     

...等

我的问题是:在最后一步我已经描述了C开始的地方,是否有一种方法可以优先考虑B开始,因为它是构建中的后续步骤(对比C是一个第一步)?我的动机是,我宁愿让一个构建完全完成,而不是几个构建同时进行/部分完成。

通过参数化触发器插件(this question中的详细信息),自由式项目似乎可以实现这一点,但我还没有弄清楚是否有类似的方法来实现这一点使用管道脚本。我已经看过优先排序器插件,它显然最近增加了管道兼容性,但我不明白管道兼容性如何实际工作,因为我无法找到任何关于其使用的示例或文档,我&#39 ;我不确定在我的步骤中硬编码优先级数字是一个理想的解决方案(实际上,脚本比我提供的示例复杂得多,所以我可以看到优先级数字很快变得笨拙和混乱)。还有一些其他优先事项"我找到了基于插件的插件,特别是Accelerated Build Now插件,但它已经多年没有更新,所以它没有管道支持。

到目前为止,我所看到的态度是,在队列形成和需要确定任务优先级的情况下,"just add more slaves"。这在设计决策中是有意义的,但遗憾的是我使用有限的资源并且确实需要一些队列管理,因为我无法添加更多的从站来缓解队列。还有其他人解决了这个问题吗?

0 个答案:

没有答案