I have several jenkins slaves configured and only label with dockerserver
has docker env, then how can I restrict the jenkins pipeline docker agent in this slave?
Below Jenkinsfile
doesn't work, the agent
inside stage
will overwrite the defined slave dockerserver
pipeline { agent { label 'dockerserver' } stages { stage('Back-end') { agent { docker { image 'maven:3-alpine' } } steps { sh 'mvn --version' } } stage('Front-end') { agent { docker { image 'node:7-alpine' } } steps { sh 'node --version' } } } }
It may pick other slave which doesn't have docker supported
Any suggestion?
Just had the same problem, seems to work for me like this:
pipeline {
agent { label 'dockerserver' } // if you don't have other steps, 'any' agent works
stages {
stage('Back-end') {
agent {
docker {
label 'dockerserver' // both label and image
image 'maven:3-alpine'
}
}
steps {
sh 'mvn --version'
}
}
stage('Front-end') {
agent {
docker {
label 'dockerserver' // both label and image
image 'node:7-alpine'
}
}
steps {
sh 'node --version'
}
}
}
}
After read the guideline more, noticed it was stated https://jenkins.io/doc/book/pipeline/docker/#specifying-a-docker-label.
It shall be configured in the jenkins global(system) configuration
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With