【问题标题】:Start running Jenkins jobs simultaneously in sync开始同步运行 Jenkins 作业
【发布时间】:2016-03-29 10:59:42
【问题描述】:

是否可以同时开始运行 Jenkins 作业,以防某些配置无法启动时,“父”作业会等待所有配置同步启动?

我已经检查了 Matrix ProjectPipeline 插件以并行启动作业,但似乎它们都缺少冻结执行的可能性,直到所有配置都可以同时启动。

【问题讨论】:

  • 您能否更准确地解释一下您所说的冻结执行,直到所有配置都可以同时启动?您的意思是您希望所有分支同时启动,等待所有执行程序插槽一次可用?为什么?
  • @JesseGlick 我想测试一个可以跨多个节点或执行器运行的分布式系统。为此,我想让 Jenkins 控制构建并在死锁的情况下强制执行超时阈值。

标签: jenkins jenkins-plugins jenkins-workflow jenkins-pipeline


【解决方案1】:

在管道中,您可以执行类似(未经测试)的操作

def count = 0
parallel a: {
  node {
    count++
    waitUntil {count == 3}
    sh 'make CONFIG=a'
  }
}, b: {
  node {
    count++
    waitUntil {count == 3}
    sh 'make CONFIG=b'
  }
}, c: {
  node {
    count++
    waitUntil {count == 3}
    sh 'make CONFIG=c'
  }
}

这通常不是一个好主意,因为您可以有效地死锁等待所有三个节点同时锁定。

【讨论】:

  • 谢谢。根据您的建议,我编写了一个简单的管道script。它不仅会等到所有节点都可用,还会将其包裹在 timeout 部分。
  • 不错。提示:当catch使用纯Java InterruptedException 可能就足够了时,无需导入FlowInterruptedException;并且可以用沙盒友好的throw e 替换manager.build.doStop()(即currentBuild.rawBuild.doStop()),特别是如果您将failFast: true 添加到parallel 步骤。
【解决方案2】:

我认为this 可能会帮助你。

【讨论】:

    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2015-12-03
    • 2012-02-19
    • 2015-10-15
    相关资源
    最近更新 更多