You*_*ank 8 groovy jenkins jenkins-declarative-pipeline
我想在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'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Mor*_*ajb 15
您可以为每个阶段添加工具部分.
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'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
来自管道工具指令:
\n\ntools: A section defining tools to auto-install and put on the PATH. \n\nThe tool name must be pre-configured in Jenkins under \nManage Jenkins \xe2\x86\x92 Global Tool Configuration.\nRun Code Online (Sandbox Code Playgroud)\n\n来自pipeline-examples和cloudbess 示例:
\n\n pipeline {\n agent any\n\n tools {\n jdk \'jdk_1.8.0_151\'\n }\n\n stages {\n stage(\'jdk 8\') {\n steps {\n sh \'java -version\'\n sh \'javac -version\'\n }\n }\n stage(\'jdk 6\') {\n steps {\n withEnv(["JAVA_HOME=${tool \'openjdk_1.6.0_45\'}", "PATH=${tool \'openjdk_1.6.0_45\'}/bin:${env.PATH}"]) {\n sh \'java -version\'\n sh \'javac -version\'\n }\n }\n }\n stage(\'global jdk\') {\n steps {\n sh \'java -version\'\n sh \'javac -version\'\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
如果您要使用不同的JDK版本,建议您在每个阶段使用不同的docker映像。您可以使用带有正确标签的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'
}
}
}
Run Code Online (Sandbox Code Playgroud)
}