2009-04-14 14 views
30

Tengo una serie de proyectos ejecutándose en un esclavo Hudson. Me gustaría que uno de ellos ejecute Ant bajo Java6, en lugar del predeterminado (que es Java5 en mi entorno).¿Cómo puedo configurar un trabajo de Hudson para usar un JDK específico?

En la vista de la configuración del proyecto, esperaba encontrar ya sea:

  • una opción explícita permitiendo que fije un JDK ubicación personalizada a utilizar para este proyecto.
  • Una forma de establecer variables de entorno personalizadas para este proyecto, lo que me permitiría establecer JAVA_HOME en la ubicación JDK6. Hará que Ant recoja y ejecute Java6 como lo desee.

¿Hay alguna manera de hacer cualquiera de las anteriores? Si una de esas instalaciones está disponible, no puedo ver cómo acceder a ella. Me estoy ejecutando en Hudson 1.285.

Preferiría evitar usar una operación "ejecutar shell" en lugar de la operación "invocar Ant" si es posible: mi esclavo está en z/OS y Hudson no parece crear los scripts de shell temporales correctamente en esta plataforma (probablemente un problema de codificación).

+1

posible que desee echar éste a la lista de correo de los usuarios de Hudson: https://hudson.dev.java.net/mailing-lists.html La configuración de esclavos podría no estar muy bien documentada/ampliamente entendida aquí –

+0

Gracias, lo he hecho: http: // es .gd/szcr. Mientras tanto, mi solución hacky es modificar el script Ant principal ($ ANT_HOME/bin/ant) ​​en el esclavo para verificar el env var JOB_NAME y establecer JAVA_HOME en consecuencia (el env var JOB_NAME se establece automáticamente por Hudson). – rewbs

Respuesta

25

Resulta que si realiza la compilación parametrizada, los parámetros de cadena que agregue se convierten en variables de entorno. Con este enfoque, es posible establecer cualquier variable de entorno para la construcción, incluido JAVA_HOME, que recoge Ant.

Así que la mejor solución para mí fue:

  1. En la página de configuración de la tarea Tick "Esta construcción es parametrizado"
  2. Añadir un nuevo parámetro de cadena llamada JAVA_HOME y con el valor predeterminado establecido en la ubicación del JDK

No es obvio que los parámetros de cadena de compilación se conviertan en variables de entorno, pero una vez que sabe que lo hacen, es fácil configurar el JDK de esta manera.

Los desarrolladores en la lista de correo de Hudson recommended another approach utilizando las configuraciones maestras de JDK y anulan las configuraciones de nodos ... pero solo configurar el env de JAVA_HOME me parece mucho más fácil.

+0

Esta respuesta parece ser incorrecta. Vea la siguiente respuesta a continuación para la respuesta correcta. –

+1

Si está aquí porque solo quiere configurar un JDK diferente para algunas versiones de Hudson, vea la otra respuesta de Mark. Sin embargo, para las preguntas que se vuelven a preguntar, la configuración de un JDK diferente para construcciones en un esclavo, esta es la respuesta correcta. – skiphoppy

0

Una manera de establecer variables de entorno personalizadas para este proyecto, lo que me permitiría establecer JAVA_HOME en la ubicación JDK6. Hará que Ant recoja y ejecute Java6 como lo desee.

Al configurar los pasos de compilación para Ant, en "Invocar Ant", si hace clic en "Avanzado", puede establecer las opciones personalizadas de Java. La ayuda en pantalla dice:

Si su construcción requiere un ANT_OPTS personalizado, especifíquelo aquí. Por lo general, esto se puede usar para especificar los límites de la memoria java a usar, por ejemplo, -Xmx512m. Tenga en cuenta que otras opciones Ant (como -lib) deberían ir al campo "Ant targets".

Tengo la sensación de que esto no funcionará para que funcione el JDK, sin embargo.

¿Ha configurado varias instalaciones JDK para esta instancia de Hudson en Manage Hudson/Configure System?

+0

Su sensación es correcta: ANT_OPTS para que las opciones de JVM personalizadas pasen al JDK y no afecte a qué JDK usar. Sin embargo, no sabía acerca de la vista Configurar sistema que permite varias instalaciones JDK. No estoy seguro de cómo esto funcionará para los esclavos, pero voy a echar un vistazo, ¡gracias! – rewbs

+2

Si lo miramos de cerca, parece que los JDK de Manage Hudson -> Sistema de configuración son solo para JDK en el maestro, no en los esclavos. ¿Me estoy perdiendo algo? ¿Hay alguna forma de configurar múltiples JDK en un esclavo? No hay opción JDK en la vista "Configurar nodo" en Hudson 1.285. – rewbs

27

Tenemos Java 5 y Java 6 configurados para usar en nuestra instancia de Hudson.

En Administrar Hudson -> Sistema de configuración, puede agregar varios JDK y especificar la ruta para JAVA_HOME. En la configuración para cada trabajo, luego seleccionó en qué JDK desea que se ejecute ese trabajo.

+0

Ver el segundo comentario en la respuesta anterior - parece que esta opción permite múltiples JDK en el maestro, pero no en esclavos/nodos. – rewbs

+1

Se perdió que era un esclavo. Solo he usado Hudson como maestro, así que no puedo ofrecer ninguna información allí. – Mark

+0

Además, no puede elegir qué JDK usar con una tarea ANT en Hudson. – ShiDoiSi

0

se puede usar así.

en la ventana de comandos por lotes Inicialmente puede establecer el nombre de la variable JAVA_HOME, asignar este nombre de variable personalizado a la variable PATH. luego puede llamar a un script ant para elegir un archivo específico.

Ejemplo:

conjunto JAVA_HOME = C: /java/jdk1.6.1

PATH =% JAVA_HOME%/bin;% PATH%

acumulación hormiga.xml

+0

La pregunta dice "Prefiero evitar el uso de una operación de" ejecutar shell ", que es lo que está sugiriendo aquí. –

0

Eche un vistazo a Setenv Plugin. No se puede establecer variables como JAVA_HOME = C: /java/jdk1.6.1 PATH =% JAVA_HOME%/bin;% PATH%

2

Nos logró este problema mediante el uso de dos diferentes nodos de Java Hudson. Uno para Java 6 y uno para Java 7. Luego, asignamos los Trabajos a los diferentes Nodos de acuerdo a sus necesidades.

2

Los agentes esclavos individuales se pueden configurar para usar JDK específicos en el sistema en el que los ejecuta.

gestionar los nodos> Esclavo> Configurar> Variables de entorno

Por ejemplo

Nombre: JAVA_HOME Valor: C: \ Archivos de programa (x86) \ Java \ jdk1.6.0_45 \

1

El La mejor manera es

  1. Instale todos los JDK necesarios en su sistema.
  2. Añádalas a jenkins bajo el título JDK en la página de configuración.
  3. Instalación de Maven Información plugin para Jenkins
  4. Jenkins Restart
  5. ir a su página de configuración de la tarea.
  6. Seleccionar requiere JDK en el cuadro combinado JDK aparecerá en Configuración Info Plugin Maven
  7. Constrúyelo
  8. disfruta !!!
0

Tuve un problema donde el JDK instalado era JDK 8, pero quería que Jenkins utilizara el JDK 7.Por lo tanto, después de instalar el JDK 7 en la Jenkins cuadro de construir,

he añadido el camino JDK a Jenkins Configuraciones:

Jenkins -> Administrar Jenkins -> Sistema Configurar -> JDK -> Añadir nombre de JDK y Ruta

Además, Editar jenkins-runner.sh: Añadir la línea:

export JAVA_HOME = ""

Cambiar las dos últimas líneas para leer:

echo "/ bin/java" $ javaArgs -jar "guerra $" $ args

Exec "/ bin/java" $ javaArgs -jar "guerra $" $ args

Cuestiones relacionadas