web-dev-qa-db-fra.com

Comment configurer l'installation de Maven dans Jenkins par nœud esclave individuel?

Symptôme

Si je crée un travail Maven dans Jenkins ( Nouvel élément => Projet Maven , en utilisant le plugin maven) avec tous les paramètres par défaut et l'exécuter, j'obtiens cette erreur:

Started by user anonymous
Building on master in workspace /var/lib/jenkins/jobs/job_name/workspace
ERROR: A Maven installation needs to be available for this project to be built.Either your server has no Maven installations defined, or the requested Maven version does not exist.
Finished: FAILURE

Maven fonctionne parfaitement à partir de la ligne de commande avec juste mvn.

Solution de contournement inacceptable

Il existe une configuration Jenkins à l'échelle du système pour l'installation de Maven: Gérer Jenkins => Configurer le système => Maven / Installations Maven . Et si j'ajoute l'installation de Maven à l'aide de cette interface utilisateur Web (en fournissant un chemin préinstallé dans MAVEN_HOME comme /usr/share/maven), le travail s'exécute AVEC SUCCÈS.

Question: Pourquoi est-ce une configuration Jenkins globale et non spécifique à Slave?

La configuration globale de Jenkins n'a pas de sens: Maven est exécuté par esclave, pas par Jenkins.

Le zoo des esclaves où Jenkins exécute les travaux peut contenir des esclaves avec diverses plates-formes, systèmes d'exploitation et environnements dans lesquels différentes versions de Maven sont installées à différents emplacements.

Question: Comment configurer l'installation de Maven par nœud esclave?

Définition de variables d'environnement comme MAVEN_HOME et M2_HOME vers le même chemin pour l'ensemble du système sur le nœud esclave n'a pas fonctionné.

Versions

Jenkins Master et Slave sont des hôtes Linux. Version Jenkins: 1.598

19
uvsmtid

En supposant que vous avez Java et Maven installés sur votre esclave:

  1. Allez dans Gérer Jenkins -> Gérer les nœuds
  2. Cliquez sur l'icône de configuration sur le nœud que vous souhaitez configurer
  3. Faites défiler jusqu'à "Propriétés du nœud" et cochez la case "Emplacement des outils"
  4. Remplissez les options pour Java et Maven.

Cela devrait maintenant fonctionner (même si vous avez configuré une installation Maven sur le maître).

15
Tim Webster

Pour moi, la solution était d'aller dans Gérer Jenkins -> Configuration globale des outils, et d'y installer maven. Vous pouvez y accéder via/configureTools (ex: http: // votre-ip: 8080/jenkins/configureTools )

Exemple: installations Maven

  • Nom: my_maven_3.3.9
  • MAVEN_HOME:/usr/share/maven

Configurations supplémentaires pour d'autres outils courants sur/configureTools:

Installations Git

  • Nom: my_git_2.11.0
  • Chemin vers l'exécutable Git:/usr/bin/git

Installations JDK

  • Nom: my_jdk_1.8.0_161
  • Java_HOME: /opt/jdk/jdk1.8.0_161
5
Anonymous User

Si vous n'ajoutez PAS Maven à la configuration principale et que vous l'installez simplement sur chaque esclave avec ses propres variables d'environnement éventuellement différentes (exemple avec la version 3.2.5)

M2_HOME=C:\Apache-maven-3.2.5
M2=C:\Apache-maven-3.2.5\bin
Path+=;C:\Apache-maven-3.2.5\bin

alors chaque esclave Jenkins utilisera simplement Maven avec les paramètres locaux.

1
giuspen