web-dev-qa-db-fra.com

Comment configurer un travail Hudson pour utiliser un JDK spécifique?

J'ai plusieurs projets en cours sur un esclave Hudson. J'aimerais que l'un d'eux exécute Ant sous Java6, plutôt que le paramètre par défaut (Java5 dans mon environnement).

Dans la vue de configuration du projet, j'espérais trouver:

  • Une option explicite me permettant de définir un emplacement JDK personnalisé à utiliser pour ce projet.
  • Une façon de définir des variables d’environnement personnalisées pour ce projet, ce qui me permettrait de définir Java_HOME sur l’emplacement JDK6. Ant ferait ramasser et exécuter sur Java6 comme souhaité.

Y a-t-il un moyen de faire l'une ou l'autre de ces choses? Si l'une de ces installations est disponible, je ne vois pas comment y accéder. Je cours sur Hudson 1.285.

Si possible, je préférerais éviter d'utiliser une opération "execute Shell" au lieu de l'opération "invoke Ant": mon esclave est sous z/OS et Hudson ne semble pas créer correctement les scripts Shell temporaires sur cette plate-forme (probablement un problème d'encodage ).

30
rewbs

Il s'avère que si vous définissez la construction paramétrée, tous les paramètres de chaîne que vous ajoutez deviennent des variables d'environnement. Avec cette approche, il est possible de définir n’importe quelle variable d’environnement pour la construction, y compris Java_HOME, qui est récupérée par Ant.

La meilleure solution pour moi était donc:

  1. Dans la page de configuration du travail, cochez "Cette construction est paramétrée"
  2. Ajoutez un nouveau paramètre String appelé Java_HOME et définissez la valeur par défaut à l'emplacement du JDK.

Il n'est pas évident que les paramètres de chaîne de construction deviennent des variables d'environnement, mais une fois que vous savez qu'ils le font, il est facile de définir le JDK de cette façon. 

Les développeurs de la liste de diffusion Hudson ont recommandé une autre approche en utilisant les configurations JDK principales et les remplacent dans les configurations des noeuds ... mais le simple fait de configurer Java_HOME env var me semble beaucoup plus facile.

25
rewbs

Nous avons à la fois Java 5 et Java 6 configurés pour être utilisés dans notre instance Hudson.

Sous Manage Hudson -> Configuration System, vous pouvez ajouter un certain nombre de JDK et spécifier le chemin d'accès à Java_HOME. Dans la configuration de chaque travail, vous avez ensuite sélectionné le JDK sur lequel vous souhaitez exécuter ce travail.

27
Mark

Des agents esclaves individuels peuvent être configurés pour utiliser des JDK spécifiques sur le système sur lequel vous les exécutez.

Gérer les nœuds> Esclave> Configurer> Variables d'environnement

Par exemple

Nom: Java_HOME Valeur: C:\Program Files (x86)\Java\jdk1.6.0_45 \

2
Obaid

Nous avons résolu ce problème en utilisant deux nœuds Java Hudson différents. Un pour Java 6 et un pour Java 7. Nous avons ensuite affecté les travaux aux différents nœuds en fonction de leurs besoins.

2
Ralph

Le meilleur moyen est,

  1. Installez tous les JDK requis sur votre système.
  2. Ajoutez-les à Jenkins sous le titre JDK dans la page de configuration.
  3. Installer le plugin Maven Info sur Jenkins
  4. Redémarrer Jenkins
  5. Accédez à la page de configuration de votre travail.
  6. Sélectionnez le JDK requis dans la liste déroulante JDK qui apparaît sous Configuration du plug-in Maven Info. 
  7. Construit le
  8. Prendre plaisir!!!
1
javatar

vous pouvez utiliser comme ça.

dans la fenêtre de commande batch, vous pouvez initialement définir le nom de variable Java_HOME. Attribuez ce nom de variable personnalisé à la variable PATH. alors vous pouvez appeler un script ant pour choisir un fichier spécifique.

Exemple:

set Java_HOME = C: /Java/jdk1.6.1

PATH =% Java_HOME%/bin;% PATH%

ant build.xml

0
Srinivas

J'ai eu un problème où le JDK installé était le JDK 8 alors que je voulais que Jenkins utilise JDK 7. Donc, après l’installation de JDK 7 sur le boîtier de compilation Jenkins, 

J'ai ajouté le chemin JDK aux configurations Jenkins: 

Jenkins -> Gérer Jenkins -> Configurer le système -> JDK -> Ajouter le nom et le chemin du JDK 

Aussi, Éditez jenkins-runner.sh: Ajoutez la ligne: 

export Java_HOME = ""

Changez les deux dernières lignes pour lire:

echo "/ bin/Java" $ javaArgs -jar "$ war" $ args

exec "/ bin/Java" $ javaArgs -jar "$ war" $ args

0
diptia

Regardez le plugin Setenv. Vous pouvez y définir des variables comme Java_HOME = C: /Java/jdk1.6.1 PATH =% Java_HOME%/bin;% PATH%

0
johannes

Une façon de définir des variables d’environnement personnalisées pour ce projet, ce qui me permettrait de définir Java_HOME sur l’emplacement JDK6. Ant ferait ramasser et exécuter sur Java6 comme souhaité.

Lors de la configuration des étapes de construction pour Ant, sous "Appeler Ant", si vous cliquez sur "Avancé", vous pouvez définir des options Java personnalisées. L'aide à l'écran indique: 

Si votre construction nécessite un ANT_OPTS personnalisé, spécifiez-le ici. Cela peut généralement être utilisé pour spécifier les limites de mémoire Java à utiliser, par exemple -Xmx512m. Notez que les autres options Ant (telles que -lib) doivent aller dans le champ "Cibles Ant".

J'ai l'impression que cela ne fonctionnera pas pour le JDK, cependant.

Avez-vous configuré plusieurs installations JDK pour cette instance Hudson sous Manage Hudson/Configure System?

0
matt b