2015-05-21 24 views
11

sto cercando di eseguire una shell di comando a Jenkins, sto lavorando su Windows 7. In uscita della console ho questa:Eseguire una shell di comando a 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 

Qualche idea?

+0

per qualche motivo non penso che provare a lanciare shell 'sh' funzionerà su Windows. Forse dovresti provare a lanciare gli script '.bat' da quando sei su Windows? – EdgeCaseBerg

risposta

3

errore indica che lo script non esiste

Il file non esiste. controllare il percorso completo

C:\Windows\TEMP\hudson6299483223982766034.sh 
The system cannot find the file specified 

Inoltre, per lanciare script .sh in Windows, è necessario avere installato CYGWIN e ben configurati nel vostro percorso

conferma esiste quello script.

nello script Jenkins, procedere come segue per confermare che avete il file

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

sto provando ora solo per eseguire un comando shell su un lavoro –

+0

sì ho capito. ma Jenkins non è in grado di trovare il comando della shell. Puoi anche fare quanto segue in jenkins per confermare che puoi vedere lo script della shell.(vedi aggiornamento) – aorfevre

27

Per schiavo di Windows, utilizzare Execute Windows batch command.
Per slave tipo Unix come linux o Mac, l'opzione è Execute shell.

Execute Windows Command shell

+0

per me è più semplice usare il comando shell, ecco perché sto cercando di eseguire un comando shell su windows –

+0

Bene, prova a fornire il percorso completo di 'sh' a jenkins. In questo modo: 'C: \ Windows \ sh myfile.sh' – mainframer

+0

per essere chiaro sto cercando di usare il comando curl, non posso farlo con il comando windows e non sono sicuro che possa farlo con il comando shell su jenkins, qualche idea? –

1

Questo avviene perché Jenkins non è a conoscenza circa il percorso shell. In Gestione Jenkins -> Configura Sistema -> Shell, impostare il percorso di shell come

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

Grazie per il suggerimento, ma non funziona per un mix di slave Linux e Windows? Questo dovrebbe essere configurabile a livello di slave. – Adrian

7

Per quanto ne so, Windows non supporta shell script fuori dagli schemi. È possibile installare Cygwin o Git per Windows, passare a Gestisci Jenkins> Configura shell di sistema e indirizzarlo alla posizione del file sh.exe trovato nella loro installazione. Ad esempio:

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

C'è un'altra opzione che ho scoperto. Questo è migliore perché mi ha permesso di usare la shell negli script della pipeline con semplice sh "something".

Aggiungere la cartella al sistema PATH. Fare clic con il tasto destro del mouse su Computer, fare clic su Proprietà> Impostazioni di sistema avanzate> Variabili ambientali, aggiungere C:\Program Files\Git\bin\ alla proprietà Path del sistema.

IMPORTANTE nota: per qualche motivo ho dovuto aggiungerlo al percorso del sistema, aggiungendo all'utente il percorso non funzionava, anche se Jenkins era in esecuzione su questo utente.

Disclaimer: i nomi possono variare leggermente in quanto non utilizzo Windows inglese.

+0

Questo è quello che ho fatto. Cygwin installato sotto C: \ cygwin. Quindi sotto Gestisci Jenkins> Configura> Shell (eseguibile da shell), ho inserito: c: \ cygwin \ bin \ sh.exe – user1521213

+0

Grazie. Questo è ciò che alla fine ha funzionato per me. Non avevo ancora incontrato il problema, ma penso che potrebbe essere dovuto al fatto che questa volta ho installato Jenkins in un'unità separata da dove è stato installato git. – bitterman

Problemi correlati