Jenkins JDK-Tools verhalten sich je nach Installationstyp unterschiedlichJava

Java-Forum
Guest
 Jenkins JDK-Tools verhalten sich je nach Installationstyp unterschiedlich

Post by Guest »

Das Problem
In Jenkins v2.479.2 haben wir ein Problem beim Festlegen von JDK-Tools.
Wir haben festgestellt, dass sich das Verhalten in der Funktion unterscheidet wie JDK installiert wird. Wir verwenden Agenten, um deklarative Pipelines auszuführen.
  • Wenn das JDK-Tool mit dem Eclipse-Temurin-Plugin installiert wird, ist JAVA_HOME korrekt eingestellt
  • Wenn das JDK-Tool mit der Option Extract*.zip/*.tar.gz von Github installiert wird, ist JAVA_HOME nicht richtig eingestellt
Was Wir erwarten
Das Verhalten der JDK-Tools ist unabhängig von der Installationsmethode dasselbe
Können Sie einen Fehler in unseren Beispielen erkennen oder? Haben Sie eine Problemumgehung, um die JDK-Installation vom Installationstyp der Extraktionsmethode zu verwenden?
Beispiele

Code: Select all

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'
}
}
}
}
}
}
JDK wird mit dem Eclipse-Temurin-Installationsprogramm installiert (Download von Adoptium).

Code: Select all

[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
Wie Sie sehen können:
  • jdk wird aus dem Cache installiert
  • extrahiert nach /home/jenkins/agent/tools/hudson.model.JDK/jdk21
  • JAVA_HOME ist /home/jenkins/agent/tools/hudson.model.JDK/jdk21
  • Java-Version ist 21.0.5 (festgelegt vom JDK-Tool)
  • Im Ordner JAVA_HOME ist /bin
JDK mit der Option Extract .zip .tar.gz
installiert

Code: Select all

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
Wie Sie sehen können:
  • jdk wird von https://github.com/adoptium/temurin21- installiert. binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_x64_linux_hotspot_21.0.5_11.tar.gz
  • extrahiert nach /home/jenkins/agent/tools/hudson.model.JDK/jdk21
  • JAVA_HOME ist /home/jenkins/agent/tools/hudson.model.JDK /jdk21
  • Java-Version ist 11.0.20 (Java-Version des Jenkins-Agenten (myagent)) nicht 21
  • Der JAVA_HOME-Ordner hat nicht /bin, da er den Ordner jdk-21.0.5+11 hat, sodass JAVA_HOME nicht richtig eingestellt ist
Was wir versucht haben
Auch wenn JAVA_HOME mit dem richtigen /bin-Pfad auf der Bühne gesetzt ist, das JAVA_HOME ist immer noch auf previous gesetzt Wert.

Code: Select all

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

Code: Select all

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)
Wie Sie sehen können:
  • JAVA_HOME ist /home/jenkins/agent/tools/hudson.model.JDK /jdk21
  • Java-Version ist 11.0.20 (von myagent)
  • sogar env.JAVA_HOME = gesetzt /home/jenkins/agent/tools/hudson.model.JDK/jdk21/jdk-21.0.5+11 ist immer noch /home/jenkins/agent/tools/hudson.model.JDK/jdk21
  • Java-Version ist immer noch 11.0.20 (von myagent)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post