2015-05-21 4 views
11

Ich versuche, eine Kommando-Shell in Jenkins auszuführen, ich arbeite auf Windows 7. In der Konsolenausgabe ich dieses:Führen Sie eine Befehls-Shell in jenkins

Building in workspace C:\Program Files (x86)\Jenkins\workspace\test 
[test] $ sh -xe C:\Windows\TEMP\hudson6299483223982766034.sh 
The system cannot find the file specified 

FATAL: L'exécution de la commande a échoué. 
java.io.IOException: Cannot run program "sh" (in directory "C:\Program Files (x86)\Jenkins\workspace\test"): CreateProcess error=2, Le fichier spécifié est introuvable 
    at java.lang.ProcessBuilder.start(Unknown Source) 
    at hudson.Proc$LocalProc.<init>(Proc.java:244) 
    at hudson.Proc$LocalProc.<init>(Proc.java:216) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:816) 
    at hudson.Launcher$ProcStarter.start(Launcher.java:382) 
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:97) 
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
    at hudson.model.Build$BuildExecution.build(Build.java:205) 
    at hudson.model.Build$BuildExecution.doRun(Build.java:162) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537) 
    at hudson.model.Run.execute(Run.java:1744) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:98) 
    at hudson.model.Executor.run(Executor.java:374) 
Caused by: java.io.IOException: CreateProcess error=2, Le fichier spécifié est introuvable 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(Unknown Source) 
    at java.lang.ProcessImpl.start(Unknown Source) 
    ... 16 more 
Build step 'Exécuter un script shell' marked build as failure 
[BFA] Scanning build for known causes... 
[BFA] No failure causes found 
[BFA] Done. 0s 
Finished: FAILURE 

Jede Idee?

+0

aus irgendeinem Grund glaube ich nicht, dass der Versuch, 'sh' Shells zu laufen, auf Windows funktioniert. Vielleicht sollten Sie versuchen, '.bat'-Skripte auszuführen, da Sie Windows benutzen? – EdgeCaseBerg

Antwort

3

Fehler zeigt, dass Skript nicht

nicht existiert Die Datei existiert nicht.

überprüfen Sie Ihre vollständigen Pfad
C:\Windows\TEMP\hudson6299483223982766034.sh 
The system cannot find the file specified 

Außerdem .sh Skripte in Windows zu starten, müssen Sie CYGWIN installiert haben und gut ausgebildet in Ihren Weg

bestätigen, dass Skript existiert.

In jenkins Skript, nicht zu bestätigen folgendes, dass Sie die

cd C:\Windows\TEMP\ 
ls -rtl 
sh -xe hudson6299483223982766034.sh 
+0

Ich versuche jetzt nur einen Shell-Befehl für einen Job auszuführen –

+0

ja ich verstand. aber Jenkins kann Ihren Shell-Befehl nicht finden. Sie können sogar vorher in jenkins Folgendes tun, um zu bestätigen, dass Sie das Shell-Skript sehen können.(siehe Update) – aorfevre

27

Für Windows Slave-Datei zu tun haben, können Sie Execute Windows batch command verwenden.
Für Unix-ähnliche Slave wie Linux oder Mac, Execute shell ist die Option.

Execute Windows Command shell

+0

für mich ist es einfacher zu Shell-Befehl zu verwenden, deshalb ich einen Shell-Befehl auf Windows ausführen möchte –

+0

Nun, versuchen Sie den vollständigen Pfad von "Sh" zu Jenkins. Wie folgt: 'C: \ Windows \ sh myfile.sh' – mainframer

+0

um klar zu sein, ich versuche, curl-Befehl zu verwenden, ich kann dies nicht mit Windows-Befehl tun, und ich bin mir nicht sicher, dass das mit Shell-Befehl auf tun kann Jenkins, irgendeine Idee? –

1

Dies ist passiert, weil Jenkins nicht bewusst über die Shell-Pfad ist. In Jenkins Manage -> Configure System -> Shell, setzen Sie die Shell-Pfad als

  • C: \ Windows \ system32 \ cmd.exe
+1

Danke für den Hinweis, aber funktioniert nicht für einen Mix Linux und Windows-Slave? Dies sollte auf Slave-Ebene konfigurierbar sein. – Adrian

7

Soweit ich weiß, wird Windows nicht Schalenstütz- Skripte aus der Box. Sie können Cygwin oder Git für Windows installieren, gehen Sie zu Manage Jenkins> Configure System Shell und zeigen Sie es auf den Speicherort der sh.exe-Datei in ihrer Installation gefunden. Zum Beispiel:

C:\Program Files\Git\bin\sh.exe 

Es gibt eine andere Option, die ich entdeckt habe. Dieser ist besser, weil es mir erlaubt, Shell in Pipeline-Skripten mit einfachen sh "something" zu verwenden.

Fügen Sie den Ordner zu System PATH hinzu. Klicken Sie mit der rechten Maustaste auf Computer, klicken Sie auf Eigenschaften> erweiterte Systemeinstellungen> Umgebungsvariablen und fügen Sie Ihrer Systempfadeigenschaft C:\Program Files\Git\bin\ hinzu.

WICHTIGER Hinweis: aus irgendeinem Grund musste ich es zum systemweiten Pfad hinzufügen, das Hinzufügen zum Benutzerpfad funktionierte nicht, obwohl Jenkins diesen Benutzer verwendete.

Haftungsausschluss: Die Namen können leicht abweichen, da ich nicht Englisch Windows verwende.

+0

Das habe ich gemacht. Installierte Cygwin unter C: \ cygwin. Dann unter Jenkins verwalten> Konfigurieren> Shell (ausführbare Shell) Ich eingegeben: c: \ cygwin \ bin \ sh.exe – user1521213

+0

Vielen Dank. Das hat letztendlich für mich funktioniert. Ich war vorher nicht auf das Problem gestoßen, aber ich denke, es könnte daran liegen, dass ich dieses Mal Jenkins in einem separaten Laufwerk installiert habe, von dem aus Git installiert wurde. – bitterman