同时开始同步运行Jenkins作业

3

有没有可能同时启动Jenkins工作,以便在某些配置无法启动时,“父”作业等待所有配置同步启动?

我已经检查了矩阵项目流水线插件,用于并行启动作业,但似乎它们都缺少冻结执行的可能性,直到所有配置可以同时启动。


你能更准确地解释一下“冻结执行,直到所有配置都可以同时启动”的意思吗?你是想让所有分支同时启动,等待所有执行器插槽一次性可用吗?为什么? - Jesse Glick
@JesseGlick 我想测试一个分布式系统,它可以在多个节点或执行器上运行。为了这样做,我希望将Jenkins用于构建控制,并在死锁情况下强制执行超时阈值。 - luka5z
2个回答

1
在Pipeline 中,你可以像这样做(未经测试):
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'
  }
}

一般来说这不是一个好主意,因为你可能会陷入等待所有三个节点同时被锁定的死锁状态。


1
谢谢。根据您的建议,我编写了一个简单的管道脚本。它不仅等待所有节点可用,还将其包装在超时部分周围。 - luka5z
不错。提示:当捕获普通的Java InterruptedException时,无需导入FlowInterruptedException;并且可以用适合沙盒的“throw e”替换manager.build.doStop()(即currentBuild.rawBuild.doStop()),特别是如果在parallel步骤中添加了“failFast: true”。 - Jesse Glick

0

我认为this可能会对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接