首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止作业在同一节点上并发执行,但允许几个并行步骤执行

如何防止作业在同一节点上并发执行,但允许几个并行步骤执行
EN

Stack Overflow用户
提问于 2019-01-30 20:29:26
回答 1查看 1.3K关注 0票数 1

我有多分支作业,整个流水线都在某个节点上运行。目前我有一个单执行器的slaves,因此多个作业不能在同一个节点上运行。我想在我的流水线中使用并行步骤,所以我需要增加执行器的数量。防止并发作业执行的最佳方法是什么?这样的配置对于Jenkins freestyle作业和节流插件来说是微不足道的-我简单地使用了“每个节点的最大并发构建数”。但在流水线中,我似乎不能对整个流水线使用“节流”,我需要在每一步都使用它。有没有更优雅的解决方案?

提亚,维塔利

EN

回答 1

Stack Overflow用户

发布于 2019-01-30 21:47:50

如果我理解正确的话,您可以为您的节点增加一些执行器,并对所有作业(包括管道)使用Do not allow concurrent builds选项(在作业的General部分)。启用此选项后,您仍然可以在流水线中运行并行步骤(只是不能运行该流水线的并发构建)。

如果您仍然希望允许并发构建选项,请尝试配置global throttle category (在Manage Jenkins -> Configure System页面中),然后在您的管道中使用它,如插件documentation中的示例所示(您只需将并行构建包装到throttle()部分):

代码语言:javascript
复制
// The script below triggers 6 subtasks in parallel.
// Then tasks will be throttled according to the category settings.
def labels = ['1', '2', '3', '4', '5', '6'] 
def builders = [:]
for (x in labels) {
    def label = x // Need to bind the label variable before the closure 

    // Create a map to pass in to the 'parallel' step so we can fire all the builds at once
    builders[label] = {
      node('linux') {
        sh "sleep 5"
      }
    }
}

throttle(['myThrottleCategory1', 'myThrottleCategory2']) {
  parallel builders
}

注意:这种可能性似乎只适用于scripted pipelines

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54440698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档