Hudson en Windows – Error: java.io.IOException: No se puede ejecutar el programa «sh»

Estoy tratando de hacer integración continua con Hudson y MSTest.

Cuando intento ejecutar este trabajo me sale 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 parece a esto:

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 Comandos se parece a esto:

"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
  • Encuentra el Problema. Tenía que especificar el shell para C\windows\system32\cmd.exe
  • Por favor responder a su propia pregunta, por lo que puede ayudar a otros en el futuro, y para que la gente no lea toda tu pregunta sólo para descubrir que está ya resuelto.
InformationsquelleAutor Markus_DE_HH | 2013-02-28

4 Kommentare

  1. 81

    Esto sucede si se han especificado los comandos de Windows como «Ejecutar shell» en lugar de «Ejecutar Windows comando de proceso por lotes».

    • ¿Por qué no es el aceptado la respuesta?
  2. 34

    Esto ocurre debido a que Jenkins no es consciente acerca de la shell de la ruta.

    En Administrar Jenkins -> configuración del Sistema -> Shell, establecer el shell ruta como

    C:\Windows\system32\cmd.exe

    • no es la figura que de PATH?
    • Perfectamente trabajado para mí, gracias.
    • Hola, tengo windows como en linux máquinas como esclavos. Si puedo configurar el camino de la cmd.exe a continuación, va a dejar de trabajar para máquinas linux
    • Me puse este camino, en el equipo de windows y en el trabajo que la ejecución de comandos del shell eco ‘Holamundo’, pero no de la impresión
  3. 8

    En mi caso, la construye trabajado con la ayuda de la «Ejecutar shell» antes de hacer un reinicio del sistema y la migración y dio la Cannot run program "sh" después. El problema fue que la ruta de acceso del sistema consiguió más corta inesperadamente. No está claro por qué, pero el camino perdido C:\Program Files (x86)\Git\bin y la versión de Git yo estaba usando viene con sh.exe.

    Por supuesto, usted puede cambiar todos tus «Ejecutar shell» construir pasos para «Ejecutar Windows comando de proceso por lotes» en todos sus trabajos como sugerido por @funkybro. Esto no resuelve su problema si usted tiene un trabajo que podría ejecutar en un sistema Windows o Linux y que tienen ambos sistemas por otros motivos.

    O, puede cambiar esta configuración para utilizar cmd.exe como sugerido por @ajith: Administrar Jenkins -> configuración del Sistema -> Shell -> Shell ejecutable = C:\Windows\system32\cmd.exe

    Pero, me gusta tener los comandos en linux y el uso de algo que se asemeja más a Bash. Es mi preferencia, pero pensé que esto también podría ser útil. Para empezar desde el principio, he utilizado Chocolate De NuGet para instalar Git. También recomiendo GnuWin a dar algunos de los comandos de Unix.

    Entonces usted puede solucionar este problema mediante la interfaz de usuario de Windows mediante la adición de C:\Program Files (x86)\Git\bin\ a la ruta de acceso del sistema.

    O se puede fijar en Jenkins global config: Administrar Jenkins -> configuración del Sistema -> Shell -> Shell ejecutable = C:\Program Files (x86)\Git\bin\sh.exe

    • Gracias @Nate. Yo tenía el mismo problema. El problema era que mi git instalar sólo añadió \Git\cmd\ y no \Git\bin..
    • También he tenido que restablecer la conexión con el nodo para realizar Jenkins volver a cargar la RUTA.
    • Si me especificar el shell ejecutable en el mundial de Jenkins’ config, incluso mi Linux y OSX esclavo intenta utilizarlo, lo que resulta en ambos fallando?! Hay una manera de simplemente especificando el shell de la ruta de acceso del ejecutable para mi Windows’ esclavo?
    • Esa es una excelente pregunta, pero por desgracia yo no sé la respuesta y no tengo Jenkins configurado ya para el experimento. Le sugiero que pruebe a buscar por esclavos la configuración específica o buscar otras soluciones. Siento no poder ayudar más.
  4. 2

    La manera de arreglar el problema era poner el valor de C:\Windows\system32\cmd.exe en la «Shell ejecutable» configuración de Hudson en la configuración del Sistema.

    En la sección de generación de su trabajo, usted puede poner comandos 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\
    

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea