significado - Hudson en Windows-Error: java.io.IOException: No se puede ejecutar el programa "sh"
jenkins windows server (4)
En mi caso, las compilaciones funcionaron utilizando el "Ejecutar shell" antes de hacer un reinicio y migración del sistema y le dieron al Cannot run program "sh"
después. El problema era que la ruta del sistema se acortaba inesperadamente. No está claro por qué, pero la ruta perdió C:/Program Files (x86)/Git/bin
y la versión de Git que estaba usando viene con sh.exe
.
Por supuesto, puede cambiar todos sus pasos de compilación "Ejecutar shell" por "Ejecutar el comando por lotes de Windows" en todos sus trabajos, tal como lo sugiere @funkybro. Esto no resuelve su problema si tiene un trabajo que podría ejecutarse en un sistema Windows o Linux y tiene ambos sistemas por otros motivos.
O bien, podría cambiar esta configuración para usar cmd.exe
como lo sugiere @ajith: Administrar Jenkins -> Configurar sistema -> Shell -> Shell ejecutable = C:/Windows/system32/cmd.exe
Pero , me gusta tener comandos de Linux y usar algo que se asemeja más a Bash. Es mi propia preferencia, pero pensé que esto también podría ser útil. Para empezar desde el principio, usé Chocolatey NuGet para instalar Git. También recomiendo GnuWin para darle algunos de los comandos de Unix muy útiles.
- Instalar Chocolatey NuGet
- En CMD o PowerShell:
cinst gnuwin git
A continuación, puede solucionarlo utilizando la interfaz de usuario de Windows agregando C:/Program Files (x86)/Git/bin/
a la ruta del sistema.
O puede solucionarlo en la configuración global de Jenkins: Gestionar Jenkins -> Configurar sistema -> Shell -> Ejecutar Shell = C:/Program Files (x86)/Git/bin/sh.exe
Estoy tratando de hacer una integración continua con Hudson y MSTest.
Cuando intento ejecutar este trabajo, aparece el siguiente error:
1 Warnung(en)
0 Fehler
Verstrichene Zeit 00:00:00.13
[workspace] $ sh -xe C:/Windows/TEMP/hudson4419897732634199534.sh
The system cannot find the file specified
FATAL: Befehlsausführung fehlgeschlagen
java.io.IOException: Cannot run program "sh" (in directory "C:/Users/Markus/.hudson/jobs/Test1 Unit TEst/workspace"): CreateProcess error=2, Das System kann die angegebene Datei nicht finden
at java.lang.ProcessBuilder.start(Unknown Source)
at hudson.Proc$LocalProc.<init>(Proc.java:187)
at hudson.Proc$LocalProc.<init>(Proc.java:157)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:649)
at hudson.Launcher$ProcStarter.start(Launcher.java:266)
at hudson.Launcher$ProcStarter.join(Launcher.java:273)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:79)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:54)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:34)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:646)
at hudson.model.Build$RunnerImpl.build(Build.java:181)
at hudson.model.Build$RunnerImpl.doRun(Build.java:136)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:434)
at hudson.model.Run.run(Run.java:1390)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:40)
at hudson.model.ResourceController.execute(ResourceController.java:81)
at hudson.model.Executor.run(Executor.java:137)
Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht finden
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 17 more
Processing tests results in file results.trx
FATAL: No MSTest TRX test report files were found. Configuration error?
[DEBUG] Skipping watched dependency update for build: Test1 Unit TEst #5 due to result: FAILURE
Finished: FAILURE
Mi configuración se ve así:
Buildverfahren
Build a Visual Studio project or solution using MSBuild
MSBuild Version MS Build .NET 4
MSBuild Build File trunk/UnitTestWithNHibernate/UnitTestWithNHibernate.sln
Command Line Arguments /p:Configuration=Release
Mi línea de comando se ve así:
"C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/MSTest.exe"
/runconfig: trunk/UnitTestWithNHibernate/UnitTest/LocalTestRun.testrunconfig /testcontainer: trunk/UnitTestWithNHibernate/UnitTest/bin/Debug/UnitTest.dll /resultsfile:results.trx
Esto sucede porque Jenkins no tiene conocimiento de la ruta del shell.
En Gestionar Jenkins -> Configurar sistema -> Shell, configure la ruta del shell como
C: / Windows / system32 / cmd.exe
Esto sucede si ha especificado su comando de Windows como "Ejecutar shell" en lugar de "Ejecutar el comando de lote de Windows".
La forma de solucionar el problema fue poner el valor de C:/Windows/system32/cmd.exe
en la configuración de "Shell ejecutable" en la configuración del sistema Hudson.
En la sección de creación de su trabajo, puede poner el comando de Windows para ejecutar después de compilar el proyecto EX:
copy target/pmd-rules-extensions-0.0.1-SNAPSHOT.jar D:/projects/sonar/sonar-3.4.1/extensions/rules/pmd/