web-dev-qa-db-fra.com

jenkins sur Mac, PATH n'est pas réglé correctement, pas / usr / local / bin

J'ai récemment installé Jenkins, en utilisant Homebrew. J'ai également installé Mercurial en utilisant Homebrew.

Je peux réussir à cloner un dépôt hg très bien - à partir du terminal. Mais si j'essaie de faire la même chose dans le cadre d'un travail à Jenkins, cela échoue.

Donc, par job, j'ai dit à Jenkins d'exécuter un script Shell echo $PATH. Effectivement, le chemin /usr/local/bin n'est pas là. Si j'exécute la même commande à partir du terminal, elle est là.

Alors, quelle est la meilleure façon de modifier le PATH pour que Jenkins tire le même PATH que j'utilise, quand je le fais écho depuis Terminal?

Remarque, Jenkins s'exécute à partir du même compte d'utilisateur auquel je suis connecté pour effectuer ces tests, donc je ne peux pas comprendre pourquoi cela se produit.

34
Dan Morrow

Dans votre fichier launchd .plist pour Jenkins, vous pouvez définir la variable d'environnement PATH en utilisant ce qui suit:

<key>EnvironmentVariables</key>
<dict>
    <key>PATH</key>
    <string>(insert your path value here)</string>
</dict>

Cela devrait définir le CHEMIN à tout ce dont vous avez besoin.

16
gaige

Pour une raison quelconque, Jenkins ne conserve pas/usr/local/bin dans le PATH lors de la connexion à un esclave.
Vous pouvez l'ajouter au CHEMIN soit en

  • Ajout d'une variable d'environnement dans la configuration Node, ou
  • Ajout d'un fichier .bashrc sur le dossier utilisateur avec

    PATH="/usr/local/bin:${PATH}"
    
9
Maxime Viargues

Vous pouvez définir PATH dans le fichier launchd.conf. Voir ici pour plus de détails. Notez que man launchctl dit que "les commandes peuvent être stockées dans $ HOME/.launchd.conf ou /etc/launchd.conf pour être lues au démarrage de launchd", vous pouvez donc probablement créer ".launchd.conf" dans votre répertoire personnel et utilisez les instructions du lien avec ce fichier. Mais pour autant que je sache dans le fichier launchd.conf, vous ne pouvez pas ajouter de répertoire à PATH, vous pouvez simplement réécrire PATH.
Vous pouvez également voir ici pour la solution utilisant le répertoire /etc/paths.d

3
cody

J'ai trouvé que même la définition de la variable d'environnement PATH pour le nœud ne fonctionnait pas pour l'installation hombrew Mercurial. Le chemin DEVRAIT être défini, mais uniquement pour la phase de création de script, pas pour la phase de vérification VCS. Voici ce que j'ai fini par faire.

  1. Allez dans Manage Jenkins -> Configure System
  2. Ajouter une nouvelle installation Mercurial
  3. Nommez-le comme vous voulez (j'ai nommé le mien build-mac)
  4. Pour Installation Directory Je mets /usr/local
  5. Le paramètre Executable était prédéfini sur INSTALLATION/bin/hg, donc je me suis arrêté là.
  6. Tout le reste ici peut être laissé vide
  7. Allez dans votre travail et modifiez la configuration
  8. Sous Source Code Management ensemble Mercurial Version à l'installation Mercurial que vous venez d'ajouter.
  9. Sauver
  10. $$$

J'espère que cela aide quiconque à rencontrer ce même problème, maintenant que nous ne sommes pas autorisés (par défaut de toute façon) à faire quoi que ce soit à l'intérieur de /usr/bin plus. Auparavant, j'aurais simplement créé un lien hg là-bas, mais maintenant avec la nouvelle fonctionnalité "System Integrity Protection", ce n'est plus aussi trivial que la tâche, et encore plus difficile si votre esclave Mac est sans tête.

3
Jordan Bondo

Il ne doit y avoir aucun espace de chaque côté de = dans la modification de PATH suivante: PATH = "/ usr/local/bin: $ PATH"

Je l'ai ajouté à mon étape de pré-construction sur Jenkins installé sur macOS.

2
Mayank