Jenkins:在每个节点上只为一个作业运行一个构建

Posted

技术标签:

【中文标题】Jenkins:在每个节点上只为一个作业运行一个构建【英文标题】:Jenkins: Run only one build for a job on each node 【发布时间】:2018-08-01 15:28:06 【问题描述】:

我们有一个项目,我们有几个 Jenkins 工作: 一种运行交付的作业(A),

只做编译和单元测试(B)

运行集成测试、静态代码分析等 (C)。

我们在四个 Jenkins 节点(主节点 + 三个从节点)上运行,我们的作业是声明性管道作业的混合,并在 Jenkins-jobs 中手动单击。

我们只想为每个节点一次运行一个集成测试构建。但是,我们希望运行与执行程序一样多的交付 (A) 和代码质量 (B) 构建。

到目前为止,Throttle concurrent builds (https://github.com/jenkinsci/throttle-concurrent-builds-plugin) 插件已经满足了我们的需求。但是,此插件不支持声明式管道构建,而且似乎根本没有更新。

可锁定资源插件 (https://github.com/jenkinsci/lockable-resources-plugin) 看起来很有希望,但我们还没有找到任何方法来通过动态设置资源名称来锁定整个构建。也就是说,当我们开始一个 C 构建时,我们希望它锁定“resource_name of server”。 这个插件允许在 options 指令中设置一个整体构建锁, נut 我们还没有弄清楚如何在那里评估环境变量。

任何建议将不胜感激!

【问题讨论】:

【参考方案1】:

因此,我们这边的解决方法是将管道脚本从声明性语法重写为脚本化语法。然后,油门并发构建插件就像一个魅力。

当错误https://issues.jenkins-ci.org/browse/JENKINS-49173 修复后,该插件也将与声明性管道一起使用。

【讨论】:

以上是关于Jenkins:在每个节点上只为一个作业运行一个构建的主要内容,如果未能解决你的问题,请参考以下文章

如何防止相同类型的两个管道 jenkins 作业在同一节点上并行运行?

根据另一个作业的状态运行 Jenkins 作业

是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?

我可以在 XtraGrid 上只为一行设置行单元格值吗?

通过Jenkins作业后,工作节点上的进程没有被杀死

如何在同一个 Jenkins 节点中加载另一个 groovy 脚本?