Establezca la variable de entorno antes de la instalación de Slave.jar.

Establezca la variable de entorno antes de la instalación de Slave.jar.

Este es el registro que obtengo:

[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)

¿Hay alguna forma de configurar las variables correctas a través de Jenkins antes (!) de ejecutar java -jar slave.jar? Intenté configurar las variables de entorno en la sección Propiedades del nodo de Jenkins, pero no se aplican antes de la instalación esclava. (cf. estoinforme de error)

Lo único que Jenkins debería hacer antes java -jar slave.jares ejecutar lo siguiente:

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

¿Cómo puedo hacer esto?

Respuesta1

Lo encontré.

No necesita ningún complemento (que de todos modos no funciona) como sugieren algunas publicaciones del foro. Solo necesita especificar JavaPath en las propiedades avanzadas de las credenciales utilizadas para conectarse al esclavo.

ingrese la descripción de la imagen aquí

Respuesta2

Puedes actualizar tu versión de Jenkins, lo solucionará. De lo contrario, esto funcionó para mí (Jenkins 1.6, nodo de compilación/prueba: macOS Mojave):

Primero instale java8en su nodo de compilación/pruebausando los comandos:

brew update
brew cask install caskroom/versions/java8

Luego, en el panel web de Jenkins, haga clic en su nodo de compilación/prueba, luego haga clic enConfigurary luego haga clic en elAvanzado..., esto le mostrará múltiples campos de texto. Luego, en el campo JavaPath, agregue la ruta a su archivo java8.

Para mí este camino es como:

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

Nota:Recuerde reemplazarlo X_XXXcon su versión java8 antes.

EntoncesAhorrar.

Después de eso, desconecte el nodo de compilación/prueba y conéctelo nuevamente. Esto deberia resolver el problema.

Fuente

información relacionada