shell jenkins build command ioexception

Ejecutar un shell de comandos en jenkins



build command (4)

Esto sucede porque Jenkins no es consciente de la ruta del shell. En Manage Jenkins -> Configure System -> Shell, configure la ruta de acceso del shell como

  • C: / Windows / system32 / cmd.exe

Estoy tratando de ejecutar un comando shell en Jenkins, estoy trabajando en Windows 7. En la salida de la consola tengo esto:

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

¿Alguna idea?


Para el esclavo de Windows, utilice el Execute Windows batch command .
Para esclavos como Unix como Linux o Mac, Execute shell es la opción.


Por lo que sé, Windows no admitirá los scripts de shell fuera de la caja. Puede instalar Cygwin o Git para Windows, vaya a Administrar Jenkins> Configurar el shell del sistema y diríjalo a la ubicación del archivo sh.exe que se encuentra en su instalación. Por ejemplo:

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

Hay otra opción que he descubierto. Este es mejor porque me permitió usar shell en scripts de canalización con un simple sh "something" .

Agregue la carpeta al sistema PATH. Haga clic con el botón derecho en Equipo, haga clic en Propiedades> Configuración avanzada del sistema> Variables de entorno, agregue C:/Program Files/Git/bin/ a la propiedad Ruta del sistema.

Nota IMPORTANTE: por alguna razón tuve que agregarlo a la ruta de todo el sistema, agregando que la ruta del usuario no funcionó, a pesar de que Jenkins se estaba ejecutando en este usuario.

Una nota importante (gracias bugfixr!):

Esto funciona. Debe tenerse en cuenta que deberá reiniciar Jenkins para que pueda seleccionar la nueva variable PATH. Acabo de ir a mis servicios y lo reformuleo desde allí.

Descargo de responsabilidad: los nombres pueden diferir ligeramente ya que no estoy usando Windows en inglés.


El error muestra que el script no existe

El archivo no existe. revisa tu camino completo

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

Además, para iniciar los scripts .sh en Windows, necesita tener CYGWIN instalado y bien configurado en su ruta.

Confirme que el script existe.

En el script jenkins, haga lo siguiente para confirmar que tiene el archivo

cd C:/Windows/TEMP/ ls -rtl sh -xe hudson6299483223982766034.sh