我关注了Jenkinsfile,我想在3个节点上运行舞台。 我已经按照this answer使用了&&运算符。
pipeline{
agent {
label 'webserver && serverex && composeserver'
}
stages{
stage('run this on 3 nodes'){
steps{
script{
sh 'echo $HOSTNAME'
}
}}
}}
但是我犯了以下错误。
没有带有标签“ webserver && serverex && composeserver”的节点
上面的阶段是一个例子,我在同一阶段有多个脚本。
我可以使用并行实现此目的,但是由于我需要在3个节点上运行它,因此它将是重复的。
我可以知道AND(&&)运算符出什么问题吗?是否按照链接中提到的答案从Jenkins中移除了它,因为它看起来像以前一样在工作?
答案 0 :(得分:3)
我认为您误解了该答案。您只能引用node([...])
中的单个节点,&&
允许您声明多个标签,詹金斯在选择适当的节点时将查找这些标签。
例如,当您有带有标签maven windows selenium
的业务代表A和具有maven linux docker
的业务代表B,具有maven gcc linux
,node('maven')
的业务代表C时,将选择节点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
}
}
}