jenkins - 仅针对特定分支限制 Jenkins 并发构建
问题描述
我一直在寻找如何做到这一点,我开始认为这是不可能的。与此类似的每个问题似乎都与限制某些节点运行或整个管道有关。
我们在 Jenkins 中有一个多分支管道,用于处理 PR 构建、分段测试和生产发布。这三个中的每一个都通过when
每个阶段中的选项进行处理,因为区别在于是否运行某些阶段。
虽然我希望能够为 PR 进行并发构建,因为我们可以打开许多需要更新的文件,但我们希望限制暂存测试的并发执行数量,因为我们需要同时进行一次暂存运行才能能够来正确控制它。
在以前的版本中,我们有几个不同的管道来处理每个场景,但我们正在更新它,使其只有一个多分支管道,并根据正在考虑的分支运行一个或另一个场景。在之前的版本中,我们使用disableConcurrentBuilds()
staging test 构建,它运行良好,但使用此选项,我们现在看到整个管道一次只运行一个构建,这使得完成 PR 构建变得非常缓慢。如果 PR 构建正在运行,由于不能同时运行,其余的 PR 只是等待它完成,以便下一个可以开始运行。
有没有一种方法可以限制某些分支或每个分支的并发构建数量?这将允许我们仅对运行暂存测试的分支禁用此功能,同时仍然能够为打开的 PR 并发运行。
谢谢!
解决方案
Jenkins UI 不允许您在每个分支的基础上指定它,但如果您通过 jenkinsfile 配置作业是可能的
if(env.BRANCH_NAME.startsWith("develop")){
properties([disableConcurrentBuilds()])
} else{
properties([])
}
如果这对您来说太粗略,因为您不希望多个分支同时到达测试或部署阶段,您可以使用锁和里程碑来尽可能允许并发,但一次只允许单个管道通过给定阶段
推荐阅读
- javascript - Vue.js 上下文和 Promise 范围
- python - 导入 asyncio 会引发错误
- r - 名为“stockPortfolio”的库发生了什么?
- javascript - 清除 html 输入 type="number" onFocus 没有警告或开始没有值 React TypeScript
- python - 什么是创建 NumPy 数组的多个幂的矢量化方法?
- html - 背景透明但不是文本
- hadoop-yarn - 当我使用 yarn 运行命令时,如何获取 applicationId?
- python - Julia 在已安装 python 3.6 的情况下安装了 python 2.7
- c++ - C++ 阻止用户创建对象实例
- url - 网络中的 ONVIF / RTSP / RTMP 协议 URL