gpt4 book ai didi

jenkins - 在 Jenkins 的多个节点上运行同一阶段

转载 作者:行者123 更新时间:2023-12-02 00:17:46 24 4
gpt4 key购买 nike

我有以下 Jenkinsfile,我想在 3 个节点上运行该阶段。我根据 this answer 使用了 && 运算符.

pipeline{
agent {
label 'webserver && serverex && composeserver'
}
stages{
stage('run this on 3 nodes'){
steps{
script{
sh 'echo $HOSTNAME'
}
}}
}}

但是我遇到了以下错误。

There are no nodes with the label ‘webserver&&serverex&&composeserver’

上面的stage是一个例子,我在同一个stage下有多个脚本。

我可以使用并行实现这一点,但它会重复,因为我需要在 3 个节点上运行它。

我可以知道 AND (&&) 运算符有什么问题吗?根据链接中提到的答案,它是否已从 Jenkins 中删除,因为它看起来像是在工作?

最佳答案

我认为您误解了那个答案。您只能在 node([...]) 中引用单个节点,&& 允许您声明多个标签,jenkins 在选择合适的节点时将查找这些标签。

例如,如果代理 A 的标签为 maven windows selenium,代理 B 的标签为 maven linux docker,代理 C 的标签为 maven gcc linux , node('maven') 将根据执行程序的可行性选择节点 A、B 或 C,当您混合了一些仅限 linux 的 sh 步骤时,这可能是一个问题,因此您可以使用 node('maven && linux') 让 jenkins 选择后两个均包含这些标签的代理之一。

如果您想在多个节点上运行相同的东西,您可以遍历节点标签数组。

def labels = ['label1', 'label2']

for (label in labels) {
node(label) {
stage('Running on ' + label){
// Do stuff
}
}
}

关于jenkins - 在 Jenkins 的多个节点上运行同一阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56504249/

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