Jenkins 如何限制并行运行的某些管道的数量?
我想允许并行运行以下管道,但由于资源有限,我必须限制并行运行的最大数量Jenkins 如何限制并行运行的某些管道的数量?,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我想允许并行运行以下管道,但由于资源有限,我必须限制并行运行的最大数量 pipeline { agent { label "$JENKINS_AGENT" } parameters { .. } options { .. } stages { stage('Checkout') { .. } stage('Config') { .. } stage('Deploy') { .. } stage('Test') { .. } } pos
pipeline {
agent { label "$JENKINS_AGENT" }
parameters { .. }
options { .. }
stages {
stage('Checkout') { .. }
stage('Config') { .. }
stage('Deploy') { .. }
stage('Test') { .. }
}
post {
failure { .. }
success { .. }
always {
cleanup()
}
}
}
例如,如果我仅限于3次部署,我如何实现这一点
编辑:我目前已将以下内容添加到我的Jenkins文件中。似乎有效,但我不确定这是不是正确的方法。(使用)
您可能会发现这些插件很有用:
严格地说,这在目前是不可能的。存在一个请求此功能的 你可以通过一些黑客来绕过这个问题。在链接的JIRA问题中有两种变通方法,它们涉及创建伪信号量,以锁定各个线程,直到伪信号量释放为止
我能够在特定用例中处理这个问题的另一种方法是确保
并行
步骤的每个分支都包装在阶段
块中。由于一个阶段一次锁定一个执行器,这意味着您将运行尽可能多的分支(只要有可用的执行器插槽),然后其他分支将等待执行器插槽恢复执行。然而,这并不总是有效的——例如,您可能有理由不将每个分支作为一个独立的阶段。我忘了添加我添加的配置片段是用于节流并发构建插件的。下行投票是因为这两个插件都不能限制管道并行
步骤的并发执行分支的数量-这些是用于限制在构建级别而不是管道步骤级别上的并发性。它们可能碰巧对OP起作用,因为OP在并行分支中运行Pipelinestage
s,这在某些方面表现为独立构建。这些插件在通用管道parallel
case中不起作用。
properties([
[
$class: 'ThrottleJobProperty',
categories: ['parallel_pipeline'],
limitOneJobWithMatchingParams: false,
maxConcurrentPerNode: 3,
maxConcurrentTotal: 3,
paramsToUseForLimit: '',
throttleEnabled: true,
throttleOption: 'project'
],
])