es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Envoltorio para Git, para el pipeline de Jenkins, en un esclavo de Jenkins con Windows 10.

Lo que estoy tratando de lograr – Quiero tener un envoltorio para el propio git, que vuelva a intentar si el comando git falla (por timeout o problemas de red).

Tengo el siguiente código simulado del envoltorio:

“”C:\Program Files\Git\cmd\git.exe” %*
echo ¡Éxito!

Después de cambiar $PATH y guardar el archivo como git.cmd y eliminar la ruta a git.exe, funciona bien si llamo a cualquier comando git directamente desde Jenkins:

script {
bat ‘git clone %REPO%’
}

Resultado:

(…)
Actualizando archivos: 100% (5314/5314), hecho.
17:58:51 E:\jenkins\workspace\sandbox>echo ¡Éxito!
17:58:51 ¡Éxito!

Sin embargo, quiero que funcione para el pipeline multibranch, que utiliza el plugin de git de Jenkins:

Y ejecutar la verificación con este complemento produce:

18:48:46 Causado por: java.io.IOException: No se puede ejecutar el programa “git” (en el directorio “E:\jenkins\workspace\PR-XXXX”): Error de CreateProcess=2, El sistema no puede encontrar el archivo especificado

De alguna manera, el complemento de git sabe que falta el git.exe y no está utilizando el script envoltorio git.cmd como en el primer ejemplo. ¿Alguna sugerencia, amigos?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Pregunta: ¿Cuál es la solución para hacer que el envoltorio de git funcione con el complemento git de Jenkins?

    Parece que el complemento git de Jenkins no puede detectar el script envolvente git.cmd. Una solución podría ser especificar la ruta completa al script git.cmd en el Jenkinsfile o el script de canalización, en lugar de depender de la variable $PATH.

    Por ejemplo:

    pipeline {
        agente cualquiero
        stages {
            stage('Checkout') {
                pasos {
                    bat '"C:/ruta/a/git.cmd" clone %REPO%'
                }
            }
        }
    }
    

    Asegúrate de reemplazar “C:/ruta/a/git.cmd” con la ruta real al script envolvente git.cmd.

    Otra posible solución podría ser agregar el directorio que contiene el script git.cmd a la variable $PATH en la configuración del trabajo de Jenkins. Para hacer esto, ve a la página de configuración del trabajo en Jenkins, desplázate hacia abajo hasta la sección “Entorno de construcción” y marca la opción “Establecer variable de entorno de construcción”. Luego, agrega una nueva variable con el nombre PATH y establece su valor como algo similar a:

    C:\ruta\a\script\envolvente\de\git;C:\Program Files\Git\cmd
    

    Esto agregará el directorio que contiene el script git.cmd al principio de la variable $PATH, de modo que Jenkins utilizará el script envolvente en lugar del ejecutable git.exe predeterminado.

    Ten en cuenta que en ambas soluciones, deberás asegurarte de que el script git.cmd sea ejecutable y tenga los permisos correctos para ejecutarse en las máquinas de los agentes de Jenkins.

Comments are closed.