Jenkins管道在多个从机上运行

Jenkins管道在多个从机上运行,jenkins,Jenkins,我有一些工作需要在两个不同的奴隶身上运行。Foons的唯一例子是: stages { parallel { stage('Test On slave1') { agent { label "slave1" } steps { sh "echo 'Hello from slave1'" ....

我有一些工作需要在两个不同的奴隶身上运行。Foons的唯一例子是:

stages {
    parallel {
        stage('Test On slave1') {
            agent {
                label "slave1"
            }
            steps {
                sh "echo 'Hello from slave1'"
                ....
            }

        }
        stage('Test On slave2') {
            agent {
                label "slave2"
            }
            steps {
                sh "echo 'Hello from slave2'"
                ....
            }
        }
    }
}

但每个从机都会复制代码。既然所有从机的工作都是相同的,那么我如何在不同的从机上并行运行一次时定义我的工作呢?谢谢。

我发现我更喜欢脚本化的管道实现,而不是声明式的。它让我对groovy语言的特性有了更多的控制和访问。其中一个特点就是闭包。在这一范围内,我将以与下文类似的方式处理这一问题

#!groovy

//A map of String -> Closure that will be run in parallel
def parallelActions = [:]
parallelActions['agent1 test'] = newAgentAction('slave1')
parallelActions['agent2 test'] = newAgentAction('slave2')

stage ('running parallel actions') {
   parallel parallelActions
}

//Function builds common behavior and returns a closure (a function as an object)
def newAgentAction(agentLabel) {
  return { ->
      node (agentLabel) {
        echo "exectuting on ${agentLabel}"
      }
  }
}

请注意,我并没有故意将舞台放在平行块内。根据您用于可视化的插件,具有并行阶段可能会使阶段的渲染顺序不可靠,并强制恒定的阶段重画。

无论是蓝色还是红色的pill,欢迎使用。谢谢你的回复。但是我必须使用Groovy语言才能在两个从机上运行?难以置信的是,代理或节点指令不支持这一点。我不确定声明性格式是否不支持并行行为tbh。这就是我如何使用脚本语法解决它的。