bash - Die Jenkins-Pipeline schlägt mit der Meldung fehl, dass unter Windows kein Programm ausgeführt werden kann




windows-10 (3)

Ich habe Windows 10 und möchte den Befehl sh in der Jenkins-Datei aus der Jenkins-Pipeline mit bash für Ubuntu für Windows ausführen, aber es funktioniert nicht

Ich habe die folgende Phase in meiner Jenkins-Pipeline:

stage('sh how to') {
        steps {
            sh 'ls -l'
        }
    }

Die Fehlermeldung lautet:

[C: \ Programme (x86) \ Jenkins \ workspace \ pipelineascode] Shell-Skript kann nicht ausgeführt werden Programm "nohup" (im Verzeichnis "C: \ Programme (x86) \ Jenkins \ workspace \ pipelineascode"): CreateProcess error = 2 , Le fichier spécifié est introuvable

Ich habe versucht, Jenkins Parameter-> Shell-Programm mit zu ändern

C: \ Windows \ System32 \ bash.exe

aber gleicher fehler ...

Wie führe ich sh script mit Windows 10's Bash aus?


Aus einer sehr schnellen Suche geht hervor, dass Ihr Fehler mit dem folgenden Problem zusammenhängt: JENKINS-33708

Die Hauptursache sieht so aus, als ob der sh Schritt unter Windows nicht unterstützt wird. Sie können zum Beispiel bat oder Cygwin installieren.

Trotzdem wurden im vorherigen Link zwei Lösungen vorgeschlagen, die Ihnen vorschlagen, die folgenden Schritte auszuführen:

  • Installiere git-bash
  • Stellen Sie sicher, dass sich der Ordner Git \ bin (dh C:\Program Files\Git\bin ) im globalen Suchpfad befindet, damit Jenkins sh.exe findet
  • Stellen Sie nohup für Jenkins zur Verfügung, indem Sie in git-bash Folgendes tun (passen Sie Ihre Pfade entsprechend an):
    • mklink "C: \ Programme \ Git \ bin \ nohup.exe" "C: \ Programme \ git \ usr \ bin \ nohup.exe"
    • mklink "C: \ Programme \ Git \ bin \ msys-2.0.dll" "C: \ Programme \ git \ usr \ bin \ msys-2.0.dll"
    • mklink "C: \ Programme \ Git \ bin \ msys-iconv-2.dll" "C: \ Programme \ git \ usr \ bin \ msys-iconv-2.dll"
    • mklink "C: \ Programme \ Git \ bin \ msys-intl-8.dll" "C: \ Programme \ git \ usr \ bin \ msys-intl-8.dll"

Abhängig von Ihrer Installation müssen Sie möglicherweise die folgenden Pfade verwenden:

  • mklink "C: \ Programme \ Git \ cmd \ nohup.exe" "C: \ Programme \ git \ usr \ bin \ nohup.exe"
  • mklink "C: \ Programme \ Git \ cmd \ msys-2.0.dll" "C: \ Programme \ git \ usr \ bin \ msys-2.0.dll"
  • mklink "C: \ Programme \ Git \ cmd \ msys-iconv-2.dll" "C: \ Programme \ git \ usr \ bin \ msys-iconv-2.dll"
  • mklink "C: \ Programme \ Git \ cmd \ msys-intl-8.dll" "C: \ Programme \ git \ usr \ bin \ msys-intl-8.dll"

Bei Git für Windows musste ich C:\Program Files\Git\bin zur Umgebungsvariablen PATH des Slave-Knotens in Jenkins hinzufügen (um Zugriff auf sh ) und dann C:\Program Files\Git\usr\bin hinzufügen auf den PATH lokal auf dem Windows-Slave (um Zugriff auf nohup ).


Mit Git für Windows 2.16.2 konnte ich C: \ Programme \ Git \ usr \ bin zum PATH hinzufügen (anstatt C: \ Programme \ Git \ bin) und folglich funktionieren meine sh-Befehle sowohl in FreeStyle als auch in Pipeline wird erstellt. Es war kein mklink notwendig. ( Source )





jenkins-pipeline