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.

Gitlab-jenkins webhook dispara construcción con rama equivocada.

He estado intentando configurar un desencadenador de compilación con un web-hook de GitLab para mi proyecto Jenkins de estilo libre.

Para ello,

En Jenkins, agregué la conexión de GitLab, añadí la URL SSH y especificé la rama que necesito construir en la sección Branches to build del plugin de Git,

Además, con el plugin de GitLab instalado, opté por Build Triggeres > gitlab webhook url
Como siguiente paso, he creado un web-hook saliente en GitLab y he añadido la URL,

Ahora el webhook funciona y se desencadena la compilación en los cambios del repositorio,\
Pero el problema es que Jenkins construye el proyecto en una rama diferente cuando se dispara desde el web-hook,

Lo que he hecho hasta ahora,

Al revisar más detenidamente, cuando hay cambios en varias ramas es decir, origin/master, origin/feature, origin/test, se construye la primera en la lista, es decir, master en lugar de la rama especificada de prueba.
Cuando se construye directamente desde Jenkins, extrae la rama correcta, no hay problema ahí,
He modificado la configuración según esta respuesta de stack-overflow, como mencionar el ‘refspec’ y añadir comportamientos de clon avanzados y clon superficiales, pero nada parece funcionar,

comparando los comandos de git ejecutados en el momento de una construcción directa de Jenkins y una construcción desencadenada por un web-hook de gitlab, muestra esta diferencia, (con las modificaciones de refspec)

 # cuando se construye con éxito
 > git fetch --no-tags --progress --depth=5 -- git@gitlab.com:<nombre_de_proyecto>.git +refs/heads/test:refs/remotes/origin/test # timeout=10
 > git rev-parse origin/test^{commit} # timeout=10

cuando se desencadena por web-hook (cambia a master al final)

> git fetch --no-tags --progress --depth=5 -- git@gitlab.com:<nombre_de_proyecto>.git +refs/heads/test:refs/remotes/origin/test # timeout=10
 > git config remote.origin.url git@gitlab.com:<nombre_de_proyecto>.git # timeout=10
 > git config --add remote.origin.fetch +refs/heads/test:refs/remotes/origin/test # timeout=10
Evitar la segunda extracción
 > git rev-parse remotes/origin/master^{commit} # timeout=10

Todas las ramas con cambios se muestran en la sección de construcción en lugar de la rama de prueba,\
que es la única rama que necesito que este proyecto extraiga desde el control remoto,

Usando la versión de Jenkins 2.303.3 JDK 8, versiones de plugins Gitlab: 1.5.22, Git: 4.10.0,

¿Puede alguien sugerir alguna solución para esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Para resolver el problema de Jenkins construyendo el proyecto en una rama diferente cuando se activa desde un webhook, puedes intentar los siguientes pasos:

    1. Comprueba la sección Branches to build del plugin git y asegúrate de que se especifica la rama correcta.
    2. En el webhook saliente en Gitlab, agrega la URL y especifica la rama.
    3. Modifica la configuración según la respuesta de Stack Overflow mencionando el refspec y agregando comportamientos avanzados de clonación y clonación superficial.
    4. Compara los comandos de git ejecutados en el momento de una construcción directa de Jenkins y una construcción activada por webhook de Gitlab para asegurarte de que se está extrayendo la rama correcta del remoto.
    5. Asegúrate de que todos los plugins (Gitlab, Git, etc.) estén actualizados.

Comments are closed.