jenkins - 如何在声明性管道 Jenkins 中选择多个 JDK 版本
jdk11版本jenkins打包jdk8项目,同时兼容jdk11与jdk8

Jenkins如何在声明式Pipeline中指定JDK版本

背景说明

docker 安装的 Jenkins JDK 版本为 1.8,将 maven 挂载进 Jenkins docker 中使用,maven 将会调用默认的 JDK1.8 来构建:

1
2
3
4
5
6
$ mvn -version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /usr/local/maven
Java version: 1.8.0_272, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.71.1.el7.x86_64", arch: "amd64", family: "unix"

而项目上使用的是高版本 Amazon Corretto JDK11,我们需要让 maven 使用 JDK11 来构建项目。

宿主机挂载二进制进 Jenkins 容器

参考 Jenkins 的 Compose 编排,将两者挂载进 Jenkins 容器使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ vim docker-compose.yml 
version: '3'
services:
jenkins:
image: jenkins/jenkins:2.263.1-lts-centos7
container_name: jenkins
restart: always
working_dir: /var/jenkins_home
ports:
- 8080:8080
- 50000:50000
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
- PATH=$PATH
volumes:
- /etc/timezone:/etc/timezone # timezone
- /data/jenkins/jenkins_backup:/data/backup/jenkins # jenkins backup
- /data/jenkins/jenkins_home:/var/jenkins_home # jenkins_home
- /data/jenkins/jenkins_home:/data/jenkins_home # jenkins_home
- /usr/bin/docker:/usr/bin/docker # docker
- /var/run/docker.sock:/var/run/docker.sock # docker
- /usr/local/jdk11:/usr/local/jdk11 # jdk
- /usr/local/maven:/usr/local/maven # mvn

别名 JDK11

全局工具配置,JDK 下新增一个 JDK,设置其别名为 jdk11JAVA_HOME 路径与挂载位置对应:

Pipeline 自定义 JDK 版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pipeline {
agent any

tools {
jdk 'jdk11'
}

stages {
stage('mvnBuild'){
steps {
script {
sh """
java -version
mvn -version
"""
}
}
}

}
}

验证:

定义多个 JDK 版本

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

当然也可以分别在不同阶段去使用不同的 JDK 版本来完成构建任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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'
}
}
}
}