gpt4 book ai didi

jenkins - 如何限制并行运行的某些管道的数量?

转载 作者:行者123 更新时间:2023-12-03 02:49:21 25 4
gpt4 key购买 nike

我想允许并行运行以下管道,但由于资源有限,我必须限制并行运行的最大数量。

pipeline {

agent { label "$JENKINS_AGENT" }
parameters { .. }
options { .. }

stages {
stage('Checkout') { .. }
stage('Config') { .. }
stage('Deploy') { .. }
stage('Test') { .. }
}

post {
failure { .. }
success { .. }
always {
cleanup()
}
}
}

例如,如果我仅限于 3 个部署,我该如何实现这一目标?

编辑:我目前已将以下内容添加到我的 jenkins 文件中。似乎有效,但我不确定这是否是正确的方法。 (使用 Throttle Concurrent Builds Plugin )

properties([
[
$class: 'ThrottleJobProperty',
categories: ['parallel_pipeline'],
limitOneJobWithMatchingParams: false,
maxConcurrentPerNode: 3,
maxConcurrentTotal: 3,
paramsToUseForLimit: '',
throttleEnabled: true,
throttleOption: 'project'
],
])

最佳答案

严格来说,目前这是不可能的。有一个open ticket in the Jenkins JIRA并请求此功能。

您也许可以通过一些技巧来解决这个问题。链接的 JIRA 问题中有一些解决方法,涉及创建伪信号量,以便锁定各个线程,直到伪信号量空闲为止。

我能够在特定用例中处理此问题的另一种方法是确保parallel 步骤的每个分支都包装在stage block 中。由于一个阶段一次锁定一个执行器,这意味着您将运行与可用执行器槽一样多的分支,然后其他分支将等待,直到执行器槽空闲才能恢复执行。然而,这并不总是有效 - 例如,您可能有理由不让每个分支成为一个独立的阶段。

关于jenkins - 如何限制并行运行的某些管道的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50578473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com