В jenkins v2.479.2 возникла проблема с настройкой инструментов JDK.
Мы обнаружили, что поведение отличается по функциям как установлен jdk. Мы используем агенты для выполнения декларативных конвейеров.
- Когда инструмент jdk установлен с плагином eclipse temurin, JAVA_HOME установлен правильно
- Когда инструмент jdk установлен с опцией Extract*.zip/*.tar.gz из github, JAVA_HOME установлен неправильно
Поведение инструментов jdk одинаково независимо от метода установки
Можете ли вы обнаружить какую-либо ошибку в наших примерах или есть обходной путь для использования установки jdk из метода извлечения?
Примеры
Код: Выделить всё
pipeline {
agent {
kubernetes {
label "myagent"
}
}
stages {
stage("JDK tool bahaviour"){
tools {
jdk "jdk21"
}
steps{
container("myagent") {
script {
println "JAVA_HOME is ${env.JAVA_HOME}"
sh 'java -version'
sh 'ls /home/jenkins/agent/tools/hudson.model.JDK/jdk21'
}
}
}
}
}
}
Код: Выделить всё
[Pipeline] {
[Pipeline] stage
[Pipeline] { (JDK tool bahaviour)
[Pipeline] tool
Installing Eclipse Temurin from /var/jenkins_home/caches/adoptopenjdk/LINUX/amd64/jdk-21.0.5+11.zip to /home/jenkins/agent/tools/hudson.model.JDK/jdk21 on myagent-x3000
[Pipeline] envVarsForTool
[Pipeline] withEnv
[Pipeline] {
[Pipeline] container
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] echo
JAVA_HOME is /home/jenkins/agent/tools/hudson.model.JDK/jdk21
[Pipeline] sh
+ java -version
openjdk version "21.0.5" 2024-10-15 LTS
OpenJDK Runtime Environment Temurin-21.0.5+11 (build 21.0.5+11-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.5+11 (build 21.0.5+11-LTS, mixed mode, sharing)
[Pipeline] sh
+ ls /home/jenkins/agent/tools/hudson.model.JDK/jdk21
NOTICE
bin
conf
include
jmods
legal
lib
man
release
- jdk установлен из кэша
- извлеченный в /home/jenkins/agent/tools/hudson.model.JDK/jdk21
- JAVA_HOME /home/jenkins/agent/tools/hudson.model.JDK/jdk21
- Версия Java — 21.0.5 (устанавливается с помощью инструмента jdk)
- В папке JAVA_HOME есть /bin
Код: Выделить всё
Unpacking https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_x64_linux_hotspot_21.0.5_11.tar.gz to /home/jenkins/agent/tools/hudson.model.JDK/jdk21 on myagent-83v0g
[Pipeline] envVarsForTool
[Pipeline] withEnv
[Pipeline] {
[Pipeline] container
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] echo
JAVA_HOME is /home/jenkins/agent/tools/hudson.model.JDK/jdk21
[Pipeline] sh
+ java -version
openjdk version "11.0.20" 2023-07-18
OpenJDK Runtime Environment (build 11.0.20+8-post-Ubuntu-1ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.20+8-post-Ubuntu-1ubuntu122.04, mixed mode, sharing)
[Pipeline] sh
+ ls /home/jenkins/agent/tools/hudson.model.JDK/jdk21
jdk-21.0.5+11
- jdk установлен из https://github.com/adoptium/temurin21-b ... _11.tar.gz
- извлечено в /home/jenkins/agent/tools/hudson.model.JDK/jdk21
- JAVA_HOME — это /home/jenkins/agent/tools/hudson.model.JDK/jdk21
- Версия Java — 11.0.20 (версия Java агента Дженкинса (myagent)) нет 21
- Папка JAVA_HOME нет /bin, поскольку есть папка jdk-21.0.5+11, поэтому JAVA_HOME установлен неправильно
Даже если JAVA_HOME установлен на сцене с правильным путем /bin, JAVA_HOME все еще есть установлено предыдущее значение.
Код: Выделить всё
pipeline {
agent {
kubernetes {
label "myagent"
}
}
stages {
stage("JDK tool bahaviour"){
tools {
jdk "jdk21"
}
steps{
container("myagent") {
script {
println "JAVA_HOME is ${env.JAVA_HOME}"
sh 'java -version'
env.JAVA_HOME='/home/jenkins/agent/tools/hudson.model.JDK/jdk21/jdk-21.0.5+11'
println "JAVA_HOME is ${env.JAVA_HOME}"
sh 'java -version'
}
}
}
}
}
}
Код: Выделить всё
Unpacking https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_x64_linux_hotspot_21.0.5_11.tar.gz to /home/jenkins/agent/tools/hudson.model.JDK/jdk21 on myagent-vfp6q
[Pipeline] envVarsForTool
[Pipeline] withEnv
[Pipeline] {
[Pipeline] container
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] echo
JAVA_HOME is /home/jenkins/agent/tools/hudson.model.JDK/jdk21
[Pipeline] sh
+ java -version
openjdk version "11.0.20" 2023-07-18
OpenJDK Runtime Environment (build 11.0.20+8-post-Ubuntu-1ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.20+8-post-Ubuntu-1ubuntu122.04, mixed mode, sharing)
[Pipeline] echo
JAVA_HOME is /home/jenkins/agent/tools/hudson.model.JDK/jdk21
[Pipeline] sh
+ java -version
openjdk version "11.0.20" 2023-07-18
OpenJDK Runtime Environment (build 11.0.20+8-post-Ubuntu-1ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.20+8-post-Ubuntu-1ubuntu122.04, mixed mode, sharing)
- JAVA_HOME — это /home/jenkins/agent/tools/hudson.model.JDK /jdk21
- Версия Java — 11.0.20 (от myagent)
- даже установите env.JAVA_HOME = /home/jenkins/agent/tools/hudson.model.JDK/jdk21/jdk-21.0.5+11 по-прежнему остается /home/jenkins/agent/tools/hudson.model.JDK/jdk21
- Версия Java по-прежнему 11.0.20 (от myagent)
Подробнее здесь: https://stackoverflow.com/questions/793 ... stallation
Мобильная версия