我想在Jenkins声明性管道中为不同的阶段使用不同的JDK版本。在第一阶段,我使用的是Java 8.在第二阶段,我使用的是Java 6.如何在Jenkins的声明性管道中选择多个JDK版本?
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'
}
}
}
}
答案 0 :(得分:9)
您可以为每个阶段添加工具部分。
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'
}
}
}
}
答案 1 :(得分:5)
如果您想拥有不同的JDK版本,我建议您为每个阶段使用不同的泊坞窗图像。您可以使用具有正确标记的docker hub openjdk映像来实现。 https://hub.docker.com/r/library/openjdk/
https://hub.docker.com/r/library/openjdk/tags/ 这样的事情:
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'
}
}
}
}
答案 2 :(得分:2)
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.
来自pipeline-examples和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'
}
}
}
}