bash jenkins windows-10 jenkins-pipeline

bash - La tubería de Jenkins sh falla con "no se puede ejecutar el programa nohup" en Windows



windows-10 jenkins-pipeline (4)

Cambiar sh a bat funcionó para mí: estoy ejecutando Jenkins en Windows. Pero solo después de haber resuelto un problema causado por el hecho de que tampoco había configurado mis herramientas (maven y JDK) correctamente en Jenkins tampoco.

Tengo Windows 10 y quiero ejecutar el comando sh en el archivo Jenkins desde la tubería de Jenkins usando bash para Ubuntu para Windows, pero no funciona

Tengo la siguiente etapa en mi cartera de Jenkins:

stage(''sh how to'') { steps { sh ''ls -l'' } }

El mensaje de error es:

[C: / Archivos de programa (x86) / Jenkins / workspace / pipelineascode] Ejecutar script de shell No se puede ejecutar el programa "nohup" (en el directorio "C: / Archivos de programa (x86) / Jenkins / workspace / pipelineascode"): Error de CreateProcess = 2 , Le fichier spécifié es introuvable

Traté de cambiar el parámetro Jenkins-> shell ejecutable con

C: / Windows / System32 / bash.exe

pero el mismo error ...

¿Cómo ejecutar sh script usando bash de Windows 10?


Con Git para Windows 2.16.2, pude agregar C: / Archivos de programa / Git / usr / bin a la RUTA (en lugar de C: / Archivos de programa / Git / bin) y, en consecuencia, mis comandos sh funcionan en FreeStyle y Construcciones de tuberías. No era necesario mklink. ( Source )


Con Git para Windows, tuve que agregar C:/Program Files/Git/bin a la PATH entorno PATH del nodo esclavo en Jenkins (para obtener acceso a sh ), luego agregar C:/Program Files/Git/usr/bin a la PATH localmente en el esclavo de Windows también (para obtener acceso a nohup ).


Desde una búsqueda muy rápida, parece que su error está relacionado con el siguiente problema: JENKINS-33708

La causa principal parece que el paso sh no es compatible con Windows. Puede usar bat o instalar Cygwin por ejemplo.

Sin embargo, se propusieron dos soluciones en el enlace anterior, sugiriéndole que siga los siguientes pasos:

  • Instalar git-bash
  • Asegúrese de que la carpeta Git / bin (es decir: C:/Program Files/Git/bin ) esté en la ruta de búsqueda global, para que Jenkins encuentre sh.exe
  • Haga que nohup esté disponible para Jenkins, haciendo lo siguiente en git-bash (adapte sus rutas en consecuencia):
    • mklink "C: / Archivos de programa / Git / bin / nohup.exe" "C: / Archivos de programa / git / usr / bin / nohup.exe"
    • mklink "C: / Archivos de programa / Git / bin / msys-2.0.dll" "C: / Archivos de programa / git / usr / bin / msys-2.0.dll"
    • mklink "C: / Archivos de programa / Git / bin / msys-iconv-2.dll" "C: / Archivos de programa / git / usr / bin / msys-iconv-2.dll"
    • mklink "C: / Archivos de programa / Git / bin / msys-intl-8.dll" "C: / Archivos de programa / git / usr / bin / msys-intl-8.dll"

Dependiendo de su instalación, puede que tenga que usar estas rutas:

  • mklink "C: / Archivos de programa / Git / cmd / nohup.exe" "C: / Archivos de programa / git / usr / bin / nohup.exe"
  • mklink "C: / Archivos de programa / Git / cmd / msys-2.0.dll" "C: / Archivos de programa / git / usr / bin / msys-2.0.dll"
  • mklink "C: / Archivos de programa / Git / cmd / msys-iconv-2.dll" "C: / Archivos de programa / git / usr / bin / msys-iconv-2.dll"
  • mklink "C: / Archivos de programa / Git / cmd / msys-intl-8.dll" "C: / Archivos de programa / git / usr / bin / msys-intl-8.dll"