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

0sgqnhkj  于 2022-11-21  发布在  Jenkins
关注(0)|答案(3)|浏览(306)

我想在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'
      }
    }
  }
}
70gysomp

70gysomp1#

您可以为每个阶段添加一个工具部分。

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

f2uvfpb92#

从管道工具指令:

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-examplescloudbess 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'
      }
    }
  }
}
2uluyalo

2uluyalo3#

如果你想拥有不同的JDK版本,我建议你在每个阶段使用不同的docker映像。
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'
        }
    }
}

}

相关问题