Search code examples
jenkins-pipelineagentjenkins-declarative-pipeline

How can I define multiple agents in declarative jenkinsfile?


In my Jenkinsfile I want a particular stage to run on both the agents in parallel.for example:

stage('abc'){
  agent {
    label "dev6" && "dev7"
  }
  steps {
    xyz()
  }
}

I have two slaves with label dev6 and dev7. I want xyz() to start on both the agents dev6 and dev7 at same time parallely. What is the correct way to do it? Do i need parallel block ? from the above code it just starts the functions on one of dev6 or dev7. I tried with

label "dev6 || dev7"

label "dev6 && dev7"  

but it doenst work. Can someone help??

Thanks


Solution

  • You need parallel on level of stages, the reason for that is actually you want this to run twice on separate agents. Unless I misunderstood you.

    pipeline {
        agent none
        stages {
            stage('Test') {
                parallel {
                    stage('Test On dev6') {
                        agent {
                            label "dev6"
                        }
                        steps {
                            xyz()
                        }
                    }
                    stage('Test On dev7') {
                        agent {
                            label "dev7"
                        }
                        steps {
                            xyz()
                        }
                    }
                }
            }
        }