2016-08-09 99 views
1

Ich habe das folgende Szenario.Kann ich den Befehl git in der Lieferpipeline verwenden, wenn git in einem anderen Pfad auf dem jenkins-Agent installiert ist als auf dem Master

Ich versuchte einen einfachen Pipeline-Job, der mein Remote-Repo klont. Es funktioniert gut, wenn ich es auf Master ausführen.

node { 
    //stage 'Checkout' 
    git([url: 'ssh://[email protected]:29418/bla/bla.git', branch: 'mybranch']) 
} 

Es verwendet die Standard-Git-Installation, um den Befehl auszuführen. Ich habe git auf einen anderen pat für Slave in Jenkins Konfiguration konfiguriert. Wenn ich versuche, die gleiche Pipeline auf einem Slave auszuführen, schlägt es fehl, weil es immer versucht, die Standard-Git-Installation zu gehen.

node ('myagent1'){ 
    //stage 'Checkout' 
    git([url: 'ssh://[email protected]:29418/bla/bla.git', branch: 'mybranch']) 
} 

Der Fehler liegt auf der Hand:

Caused by: hudson.plugins.git.GitException: Error performing command: /jenkins-master-some-path/bin/git init /home/user/workspace/pipeline 

/jenkins-master-some-path/bin/git für Master korrekt ist.

Für normale Jobs können wir eine Installation auswählen, aber kann mir jemand sagen, ob es eine Möglichkeit gibt, eine andere Git-Installation für die Pipeline auf einem Slave zu verwenden.

Antwort

1

Eine andere Lösung, die mit allen Tools funktioniert, besteht darin, den Installationspfad für bestimmte Tools für Ihren spezifischen Agentenknoten zu konfigurieren.

Geh zu:

Jenkins > Manage Nodes > myagent1 > nodes properties > tools 

... und dann das Werkzeug auswählen, die (zum Beispiel Git ausführbaren) und nur dort ausführbaren Pfad füllen kann nicht auf Ihrem Agenten zu finden.

+0

Das könnte auch funktionieren. Ich habe es nicht versucht, aber ich stimme dieser Lösung theoretisch zu. –

1

Ohhh Ich fand einen Weg. Anstatt den Befehl git zu verwenden, habe ich dieses Modul "checkout" benutzt. Wenn Sie aus der Pipeline-Jobkonfiguration auf "Pipeline-Syntax" klicken, gelangen Sie auf eine andere Seite. Dort können Sie groovy einfach über die GUI generieren.