2013-03-25 2 views
26

Ich habe vor kurzem Jenkins installiert, mit Homebrew. Ich habe auch Mercurial mit Homebrew installiert.jenkins auf Mac, PATH ist nicht richtig eingestellt, nein/usr/local/bin

Ich kann ein hg Repo erfolgreich klonen - von Terminal. Aber wenn ich versuche, dasselbe in Jenkins zu machen, scheitert es.

Also, von Job, sagte ich Jenkins zu einem Shell-Skript "Echo $ PATH" ausführen. Sicher, der Pfad "/ usr/local/bin" ist nicht da. Wenn ich denselben Befehl von Terminal aus führe, ist es da.

Also, was ist der beste Weg, um PATH zu ändern, so dass Jenkins den gleichen PATH zieht, den ich benutze, wenn ich es aus dem Terminal echo? Beachten Sie, dass Jenkins von demselben Benutzerkonto ausgeführt wird, mit dem ich bei diesen Tests angemeldet bin. Daher kann ich nicht nachvollziehen, warum dies geschieht.

Danke.

+0

Hinzufügen Außerdem lasse ich Jenkins mit launchd von meinem Konto laufen. Wann immer sich mein Account anmeldet, wird Jenkins eingeschaltet. –

+2

+1, ich dachte, ich würde meine Murmeln verlieren, froh, dass es nicht nur ich ist. Das ist früher in älteren Versionen nicht passiert, ist es ein neues "Feature"? – funkybro

Antwort

13

In Ihrem launchd .plist-Datei für Jenkins, können Sie die Umgebungsvariable PATH festlegen, indem Sie die folgenden:

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

, dass der Pfad auf das, was Sie brauchen, setzen soll.

+1

Kann der Wert "$ PATH:/my/other/path" sein? Ich muss an Pfad anhängen. –

+0

Ich glaube nicht. Soweit ich weiß, wird die $ PATH-Interpretation von der Shell ausgeführt und diese Einstellung wird nicht ausgeführt, daher müssen Sie hier eine vollständige Pfadliste angeben. – gaige

+0

Um meinen obigen Kommentar zu verdeutlichen. Soweit ich weiß, ist die Interpretation von "$ PATH" etwas, das normalerweise von der Shell ausgeführt wird und daher nicht als Erweiterung für die Datei launchd .plist verwendet wird. Daher sollten Sie eine vollständige Pfadliste des Formulars "/ foo/bar/zot:/usr/local/bin:/usr/bin:/was auch immer/Sie/wollen /" – gaige

3

Sie können PATH in der Datei launchd.conf festlegen. Details finden Sie unter here. Beachten Sie, dass man launchctl besagt, dass Befehle in $ HOME/.launchd.conf oder /etc/launchd.conf gespeichert werden können, um zum Zeitpunkt launchd started gelesen zu werden, so dass Sie wahrscheinlich ".launchd.conf" in Ihrem Home-Verzeichnis erstellen können und verwende Anweisungen aus dem Link mit dieser Datei. Aber soweit ich in der Datei launchd.conf weiß, können Sie kein Verzeichnis zu PATH hinzufügen, Sie können PATH einfach neu schreiben.
Sie können auch here für die Lösung sehen mit /etc/paths.d Verzeichnis

+0

'/ etc/launchd.conf' scheint ab OSX 10.10 veraltet zu sein. http://stackoverflow.com/a/26311753/331041 – cgmb

2

ich, dass auch die Umgebungsvariable PATH für den Knoten Einstellung nicht gefunden für die Hombrew Mercurial Installation funktioniert hat. Der Pfad würde gesetzt werden, aber nur für die Skript-Build-Phase, nicht für die VCS-Checkout-Phase. Hier ist, was ich getan habe.

  1. Go in Manage Jenkins -> Configure System
  2. Hinzufügen eines neuen Mercurial Installations
  3. Name it was Sie wollen (Ich nannte mein build-mac)
  4. Für Installation Directory I /usr/local setzen
  5. Der Executable Parameter war prä- eingestellt auf INSTALLATION/bin/hg, also habe ich es einfach dabei gelassen.
  6. Alles andere hier in kann in Ihrem Job gehen leer
  7. gelassen werden und die Konfiguration
  8. Unter Source Code Management gesetzt Mercurial Version auf die Quecksilber-Installation bearbeiten Sie gerade hinzugefügt haben.
  9. Speichern
  10. $$$

Hoffnung, dass jemand anderes läuft in das gleiche Problem hilft, jetzt, da wir (standardmäßig sowieso) nicht erlaubt sind alles innerhalb von /usr/bin mehr zu tun. Zuvor hätte ich gerade hg dort symlinked, aber jetzt mit dem neuen "System Integrity Protection" "Feature", das ist nicht mehr so ​​trivial Aufgabe, und noch schwieriger, wenn Ihr Mac-Slave ist kopflos.

3

Aus irgendeinem Grund speichert Jenkins/usr/local/bin nicht im PATH, wenn eine Verbindung zu einem Slave hergestellt wird.
Sie können es auf der PATH entweder durch

  • eine Umgebungsvariable auf dem Knoten Konfiguration Hinzufügen oder
  • eine .bashrc-Datei auf dem Benutzerordner mit

    PATH="/usr/local/bin:${PATH}" 
    
Verwandte Themen