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:
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 ).
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:
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.
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.
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 \
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.
Le meilleur moyen est,
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
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
Regardez le plugin Setenv. Vous pouvez y définir des variables comme Java_HOME = C: /Java/jdk1.6.1 PATH =% Java_HOME%/bin;% PATH%
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
?