Legen Sie die Umgebungsvariable vor der Installation von slave.jar fest.

Legen Sie die Umgebungsvariable vor der Installation von slave.jar fest.

Dies ist das Protokoll, das ich erhalte:

[09/25/15 11:02:03] [SSH] Opening SSH connection to XXXXXXX:22.
[09/25/15 11:02:04] [SSH] Authentication successful.
[09/25/15 11:02:04] [SSH] The remote users environment is:
ERRNO=22
FCEDIT=/bin/ed
HOME=/export/home/xxxx
IFS='   
'
LC_COLLATE=en_US
LC_CTYPE=en_US
LC_MESSAGES=C
LC_MONETARY=en_US
LC_NUMERIC=en_US
LC_TIME=en_US
LINENO=1
LOGNAME=xxxx
MAIL=/var/mail/xxxx
MAILCHECK=600
OPTIND=1
PATH=/usr/bin:/bin
PPID=27709
PS2='> '
PS3='#? '
PS4='+ '
PWD=/export/home/xxxx
RANDOM=23490
SECONDS=0
SHELL=/bin/ksh
SSH_CLIENT='xxx.xxx.xxx.xxx 63489 22'
SSH_CONNECTION=xxx.xxx.xxx.xxx 63489 xxx.xxx.xxx.xxx22'
TMOUT=0
TZ=Europe/Brussels
USER=scv2
_
[09/25/15 11:02:04] [SSH] Checking java version of java
[09/25/15 11:02:04] [SSH] java -version returned 1.5.0_38.
[09/25/15 11:02:04] [SSH] Starting sftp client.
[09/25/15 11:02:05] [SSH] Copying latest slave.jar...

[09/25/15 11:02:05] [SSH] Copied 489.023 bytes.
Expanded the channel window size to 4MB
[09/25/15 11:02:05] [SSH] Starting slave process: cd "./jenkins-slave" && java  -jar slave.jar

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56)

Gibt es eine Möglichkeit, die richtigen Variablen über Jenkins vor (!) der Ausführung festzulegen java -jar slave.jar? Ich habe versucht, die Umgebungsvariablen im Abschnitt „Knoteneigenschaften“ von Jenkins festzulegen, aber sie werden vor der Slave-Installation nicht angewendet. (vgl. diesFehlerbericht)

Das Einzige, was Jenkins vorher tun sollte, java -jar slave.jarist Folgendes auszuführen:

JAVA_HOME=/opt/app/java17; export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH; export PATH

Wie kann ich das machen?

Antwort1

Fand es.

Sie benötigen keine Plugins (die ohnehin nicht funktionieren), wie in einigen Forenbeiträgen vorgeschlagen wird. Sie müssen lediglich den JavaPath unter den erweiterten Eigenschaften der Anmeldeinformationen angeben, die für die Verbindung mit dem Slave verwendet werden.

Bildbeschreibung hier eingeben

Antwort2

Sie können Ihre Jenkins-Version aktualisieren, das wird das Problem lösen. Ansonsten hat das hier bei mir funktioniert (Jenkins 1.6, Build/Testknoten: macOS Mojave):

Installieren Sie zuerst Java8in Ihrem Build-/Testknotenmit den Befehlen:

brew update
brew cask install caskroom/versions/java8

Klicken Sie dann im Jenkins-Webpanel auf Ihren Build-/Testknoten und dann aufKonfigurierenund klicken Sie dann in dasFortschrittlich...Schaltfläche, dies zeigt Ihnen mehrere Textfelder. Fügen Sie dann im Feld JavaPath den Pfad zu Ihrem Java8 hinzu.

Für mich ist dieser Weg wie:

/Library/Java/JavaVirtualMachines/jdk1.8.X_XXX.jdk/Contents/Home/bin/java

Notiz:Denken Sie daran, es X_XXXdurch Ihre vorherige Java8-Version zu ersetzen.

DannSpeichern.

Trennen Sie anschließend den Build-/Testknoten und verbinden Sie ihn erneut. Dies sollte das Problem lösen.

Quelle

verwandte Informationen