gpt4 book ai didi

jenkins - 在 jenkins 中并行运行两条管道时出现死锁

转载 作者:行者123 更新时间:2023-12-03 07:33:13 25 4
gpt4 key购买 nike

目前我有以下问题。
我已经编写了一个 Jenkinsfile 来在管道中构建我的存储库。
每个存储库在多分支管道中都有自己的管道。每当我推送存储库时,管道就会开始工作。

对于建筑物,我有一个带有两个节点的代理。
当 Multibranch Pipeline 运行时,Multibranch Pipeline 使用一个节点执行单个 Pipeline,第二个节点由当前执行的 Pipeline 使用来运行单个 Job。

当两条流水线同时运行时,两条流水线都使用一个节点。但是现在的问题是两个管道都无法启动任何作业,因为所有节点都被占用了。此时我遇到了死锁,因为两个管道都在等待空闲节点来处理它们的工作。

我试图设置“disableConcurrentBuilds()”,但这只会阻止同名的管道。多分支管道中具有不同名称的管道可以同时运行。

第二个尝试是在 Jenkinsfile 中使用此代码设置 Build Blocker Plugin。

properties([
[$class: 'BuildBlockerProperty',
blockLevel: 'GLOBAL',
blockingJobs: '*pipeline_Test*',
scanQueueFor: 'ALL',
useBuildBlocker: true],
disableConcurrentBuilds()
])

但后来我收到此错误消息。

WorkflowScript: 30: Invalid option type "properties". Valid option types: [buildDiscarder, catchError, checkoutToSubdirectory, disableConcurrentBuilds, disableResume, durabilityHint, lock, newContainerPerStage, overrideIndexTriggers, retry, script, skipDefaultCheckout, skipStagesAfterUnstable, timeout, waitUntil, withContext, withCredentials, withEnv, ws] @ line 30, column 4



如何在 Jenkinsfile 中为整个管道设置 BuildBlockerProperty?
有没有其他方法可以阻止所有其他管道运行这么长时间?

谢谢你的帮助。

最佳答案

挣扎于同样的问题。

您没有提供 Jenkinsfile,但是如果您的管道需要 1 个执行器节点来运行管道和 1 个额外的执行器节点来执行作业,则可能是您在管道级别和阶段级别设置了一个代理,例如

pipeline {
agent any

stage('Build') {
agent {
label 'my label'
}

steps {
...
}
}

post {
always {
...
}
}
}

就像我一样。当然,您的具体代理设置可以有很大不同,但代理设置为 2 个级别。除了舞台之外,我必须指定管道级代理的原因是因为否则我的 post步骤不会运行。

如果您的管道需要阶段级别的特定代理设置(标签、docker 图像等),最佳做法是设置 agent none在管道级别:
pipeline {
agent none

stage('Build') {
agent {
label 'my label'
}

steps {
...
}
}
}

这样只需要 1 个执行器节点,从而防止死锁。

如果像我一样你需要一个 post步骤你可以像
pipeline {
agent none

stage('Build') {
agent {
label 'my other label'
}

steps {
...
}
}

post {
always {
node('label') {
...
}
}
}
}

为其提供一个节点。标签是强制性的,还没有找到在任何节点上运行它的方法。添加 node{}集团允许 post块与 agent none 一起运行设置在管道级别。

这对我有用,可能是 OP 的解决方案。 OP 中没有提供足够的信息来了解管道的具体配置。

关于jenkins - 在 jenkins 中并行运行两条管道时出现死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50506165/

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