如何在声明性管道Jenkins中选择多个JDK版本

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)


You*_*ank 8

来自管道工具指令

\n\n
tools: 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.\n
Run Code Online (Sandbox Code Playgroud)\n\n

来自pipeline-examplescloudbess 示例

\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}\n
Run Code Online (Sandbox Code Playgroud)\n


Gue*_*135 5

如果您要使用不同的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)

}