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'
}
}
}
}
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'
}
}
}
}
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'
}
}
}
}
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'
}
}
}
}