2013-03-25 9 views
26

Recentemente ho installato Jenkins, usando Homebrew. Ho anche installato Mercurial usando Homebrew.jenkins su Mac, PATH non è impostato a destra, no/usr/local/bin

Posso clonare correttamente un repository hg proprio bene - da terminale. Ma se provo a fare la stessa cosa come parte di un lavoro in Jenkins, fallisce.

Quindi, per incarico, ho detto a Jenkins di eseguire uno script di shell "echo $ PATH". Abbastanza sicuro, il percorso "/ usr/local/bin" non è lì. Se eseguo lo stesso comando da Terminal, è lì.

Quindi, qual è il modo migliore per modificare PATH in modo che Jenkins stia riprendendo lo stesso PERCORSO che sto utilizzando, quando lo faccio eco da Terminal? Nota, Jenkins è in esecuzione dallo stesso account utente con cui ho eseguito l'accesso a questi test, quindi non riesco a capire perché questo sta accadendo.

Grazie.

+0

inoltre, sto facendo funzionare jenkins dal mio account usando launchd. Quindi, ogni volta che il mio account "accede", attiva Jenkins. –

+2

+1, pensavo di perdere le mie biglie, felice che non fosse solo io. Questo non è mai accaduto nelle versioni precedenti, è una nuova "caratteristica" ?? – funkybro

risposta

13

Nel file .plist launchd per Jenkins, è possibile impostare la variabile d'ambiente PATH utilizzando il seguente:

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

Questo dovrebbe impostare il percorso per qualsiasi cosa avete bisogno.

+1

Il valore può essere "$ PATH:/my/other/path"? Devo aggiungere al percorso. –

+0

Non ci credo. Per quanto ne so, l'interpretazione $ PATH è fatta dalla shell e questo non verrà eseguito per questo metodo di impostazione, quindi è necessario fornire un elenco completo di percorsi qui. – gaige

+0

Per chiarire il mio commento sopra. Per quanto ne so, l'interpretazione "$ PATH" è qualcosa che viene normalmente eseguita dalla shell, e quindi non verrà utilizzata come espansione per il file launchd .plist. Pertanto, dovresti fornire un elenco completo dei percorsi del modulo "/ foo/bar/zot:/usr/local/bin:/usr/bin:/whatever/you/want /" – gaige

3

È possibile impostare PATH nel file launchd.conf. Vedi here per i dettagli. Nota che man launchctl dice che 'i comandi possono essere memorizzati in $ HOME/.launchd.conf o /etc/launchd.conf per essere letti al momento dell'avvio di launchd', quindi probabilmente puoi creare '.launchd.conf' nella tua home directory e utilizzare le istruzioni dal collegamento con questo file. Ma per quanto ne so nel file launchd.conf non puoi aggiungere la directory a PATH, puoi semplicemente riscrivere PATH.
È anche possibile vedere here per la soluzione utilizzando /etc/paths.d directory

+0

'/ etc/launchd.conf' sembra essere deprecato da OSX 10.10. http://stackoverflow.com/a/26311753/331041 – cgmb

2

ho scoperto che anche impostando la variabile d'ambiente PATH per il nodo non ha funzionato per l'installazione Mercurial hombrew. Il percorso SAREBBE impostato, ma solo per la fase di creazione dello script, non per la fase di verifica VCS. Ecco cosa ho fatto.

  1. Vai in Manage Jenkins -> Configure System
  2. Aggiungere una nuova installazione Mercurial
  3. nome è quello che vuoi (ho chiamato la mia build-mac)
  4. Per Installation Directory ho messo /usr/local
  5. Il parametro Executable era pre- impostato su INSTALLATION/bin/hg, quindi l'ho appena lasciato.
  6. Tutto il resto qui può essere lasciato vuoto
  7. entra nella tua lavoro e modificare la configurazione
  8. Sotto Source Code Management impostare Mercurial Version all'installazione mercuriale appena aggiunto.
  9. Salva
  10. $$$

Speranza che aiuta chiunque altro in esecuzione in questo stesso problema, ora che non siamo autorizzati (per impostazione predefinita in ogni modo) per fare qualche cosa all'interno di /usr/bin più. In precedenza avrei semplicemente creato un link simbolico, ma ora con la nuova funzione "System Integrity Protection", non è più così semplice da eseguire, e anche più difficile se lo slave Mac è senza testa.

3

Per qualche motivo, Jenkins non mantiene/usr/local/bin nel PERCORSO durante la connessione a uno slave.
È possibile aggiungere al percorso sia da

  • Aggiunta di una variabile di ambiente sulla Configurazione nodo, o
  • Aggiunta di un file .bashrc nella cartella utente con

    PATH="/usr/local/bin:${PATH}" 
    
Problemi correlati