web-dev-qa-db-ja.com

宣言的パイプラインJenkinsで複数のJDKバージョンを選択する方法

Jenkins宣言型パイプラインの異なるステージに異なるJDKバージョンを使用したい。最初の段階ではJava 8.を使用しています。2番目の段階ではJava 6.を使用しています。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'
      }
    }
  }
}
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'
                }
            }
       }
}
15
Mor Lajb

異なる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'
        }
    }
}

}

5
Guel135

パイプラインツールディレクティブ から:

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