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