To reduce duplication of effort in my docker containers, I'd like to run pipeline steps both in a docker container, and with Jenkins tool installations available.
This naïve attempt doesn't work - npm
is not found
pipeline {
agent { dockerfile true }
tools { nodejs 'LTS' }
stages {
stage('NPM') {
steps { sh 'npm install-ci-test' }
}
}
}
Is this possible?
You can make it available when you configure the docker container by mounting the Jenkins folder on the build agent.
pipeline {
agent {
docker {
....
// Make tools folder available in docker (some slaves use mnt while other uses storage)
args '-v /mnt/Jenkins_MCU:/mnt/Jenkins_MCU -v /storage/Jenkins_MCU:/storage/Jenkins_MCU'
...
}
....
stage(...){
environment {
myToolHome = tool 'MyTool'
}
steps {
...
sh "${myToolHome}/path/to/binary arguments"
....
I am not sure how to get the path of the location for jenkins on the build agent, so in this example it is hard coded. But it makes the tool available in the docker image.
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