it-swarm.com.de

Jenkins-Pipeline-Sh-Fehler mit "Programm Nohup kann nicht ausgeführt werden" unter Windows

Ich habe Windows 10 und möchte den SH-Befehl in der Jenkinsfile von Jenkins-Pipeline mit Bash für Ubuntu für Windows ausführen. Dies funktioniert jedoch 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] Ausführen des Shell-Skripts Programm "Nohup" kann nicht ausgeführt werden (im Verzeichnis "C:\Programme (x86)\Jenkins\workspace\pipelineascode"): CreateProcess-Fehler = 2, Le fichier spécifiéé introuvable

Ich habe versucht, Jenkins Parameter-> Shell ausführbar mit zu ändern 

C:\Windows\System32\bash.exe

aber der gleiche Fehler ...

wie man ein Sh-Skript mit der Windows 10-bash ausführt?

13
flopic

Bei einer sehr schnellen Suche sieht es so aus, als ob Ihr Fehler mit dem folgenden Problem zusammenhängt: JENKINS-33708

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

Im vorherigen Link wurden jedoch zwei Lösungen vorgeschlagen, die Sie zur Durchführung der folgenden Schritte vorschlagen: 

  • Installiere git-bash
  • Stellen Sie sicher, dass sich der Ordner Git\bin (d. H .: C:\Program Files\Git\bin) im globalen Suchpfad befindet, damit Jenkins sh.exe finden kann
  • Machen Sie Nohup für Jenkins verfügbar, indem Sie folgende Schritte in git-bash ausführen (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 folgende 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"
20
John-Philip

Mit Git für Windows 2.16.2 konnte ich C:\Program Files\Git\usr\bin zum PATH hinzufügen (statt C:\Program Files\Git\bin). Meine sh-Befehle funktionieren daher sowohl in FreeStyle als auch in Pipeline-Builds Kein Minkink war notwendig. ( Quelle )

1
thSoft

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 zu erhalten) und dann C:\Program Files\Git\usr\bin lokal zu PATH (um auf Nohup zuzugreifen).

1
sonicwave

Der Wechsel von sh zu bat hat für mich funktioniert - ich verwende Jenkins unter Windows. Aber erst nachdem ich ein Problem gelöst hatte, das durch die Tatsache verursacht wurde, hatte ich meine Werkzeuge (maven und das JDK) in Jenkins nicht korrekt konfiguriert.

0
Mike