web-dev-qa-db-fra.com

Comment sélectionner plusieurs versions JDK dans le pipeline déclaratif Jenkins

Je souhaite utiliser différentes versions de JDK pour différentes étapes du pipeline déclaratif Jenkins. Dans la première étape, j'utilise Java 8. Dans la deuxième étape, j'utilise Java 6. Comment sélectionner plusieurs versions JDK dans un pipeline déclaratif dans Jenkins?

  pipeline {
  agent any

  tools {
    jdk 'jdk_1.8.0_151'
    jdk 'jdk_1.6.0_45'
  }

  stages {
    stage('Java 8') {
      steps {
        sh 'Java -version'
        sh 'javac -version'
      }
    }
    stage('Java 6') {
      steps {
        sh 'Java -version'
        sh 'javac -version'
      }
    }
  }
}
9
YourAboutMeIsBlank

vous pouvez ajouter une section d'outils pour chaque étape.

pipeline {
        agent any

        stages {  
            stage ("first") {
                tools {
                   jdk "jdk-1.8.101"
                }
                steps {
                    sh 'Java -version'
                }
            }
            stage("second"){
                tools {
                   jdk "jdk-1.8.152"
                }
                steps{
                    sh 'Java -version'
                }
            }
       }
}
15
Mor Lajb

Je vous recommande d'utiliser différentes images de docker pour chaque étape si vous souhaitez avoir différentes versions de JDK. Vous pouvez utiliser les images openjdk du docker hub avec la bonne balise. https://hub.docker.com/r/library/openjdk/

https://hub.docker.com/r/library/openjdk/tags/ Quelque chose comme ça:

pipeline {
agent none
stages {
    stage('openjdk:7-jdk') {
        agent {
            docker { image 'jdk7_image' }
        }
        steps {
            sh 'Java -version'
        }
    }
    stage('Java8') {
        agent {
            docker { image 'openjdk:8-jdk' }
        }
        steps {
            sh 'Java -version'
        }
    }
}

}

5
Guel135

De la directive Pipeline tools :

tools: A section defining tools to auto-install and put on the PATH. 

The tool name must be pre-configured in Jenkins under 
Manage Jenkins → Global Tool Configuration.

À partir des pipeline-examples et cloudbess example :

  pipeline {
  agent any

  tools {
    jdk 'jdk_1.8.0_151'
  }

  stages {
    stage('jdk 8') {
      steps {
        sh 'Java -version'
        sh 'javac -version'
      }
    }
    stage('jdk 6') {
      steps {
        withEnv(["Java_HOME=${tool 'openjdk_1.6.0_45'}", "PATH=${tool 'openjdk_1.6.0_45'}/bin:${env.PATH}"]) {
          sh 'Java -version'
          sh 'javac -version'
        }
      }
    }
    stage('global jdk') {
      steps {
        sh 'Java -version'
        sh 'javac -version'
      }
    }
  }
}
3
YourAboutMeIsBlank