Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use a Jenkins tool installation in a docker container?

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?

like image 520
OrangeDog Avatar asked Nov 07 '22 16:11

OrangeDog


1 Answers

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.

like image 168
pablaasmo Avatar answered Nov 14 '22 23:11

pablaasmo