Tengo un submódulo en un proyecto en Jenkins. He habilitado la configuración avanzada para actualizar submódulos de forma recursiva.
Cuando ejecuto la compilación, veo que el espacio de trabajo tiene los archivos del submódulo. El problema es que parece ser la primera revisión del submódulo. Cuando presiono cambios (repositorio alojado en GitHub), Jenkins no parece actualizar el submódulo para obtener los cambios correctos. ¿Alguien ha visto esto alguna vez?
Esto se trata en la documentación del complemento Git en el sitio de Jenkins en la sección: Submódulos recursivos .
extractoEjemplo
Desde la pantalla de configuración de su trabajo, en la sección Administración de código fuente, jale el botón Agregar hacia abajo y seleccione "Comportamiento avanzado de submódulos".
Luego seleccione "Actualizar submódulos de forma recursiva":
fuente
¿Sabe que su repositorio de Git siempre se refiere a una revisión particular de un submódulo? Jenkins no cambiará automáticamente la revisión.
Si desea utilizar una revisión más reciente del submódulo, debe hacerlo en su repositorio local de Git:
Cuando lo hace así, Jenkins verificará exactamente la misma revisión del submódulo durante la compilación. Jenkins no decide por sí solo qué revisión del submódulo utilizar. Esta es la diferencia fundamental entre los submódulos de Git y los externos de SVN.
Es posible que desee leer una buena referencia sobre submódulos, por ejemplo, http://progit.org/book/ch6-6.html .
fuente
Finalmente tropecé con una forma de hacer esto y es simple.
La cuestión:
La clonación inicial con credenciales funciona bien, pero la
submodule
clonación posterior falla con credenciales incorrectas.Source Code Management >> Additional Behaviours >> Advanced sub-modules behaviours
: da como resultado un error de credencial.git submodule update --init
en laExecute Shell
sección también falla con error de credenciales.La solución:
Estoy usando
jenkins-1.574
.Build Environment >> SSH Agent
casilla.Source Code Management
secciónActualizar submódulos en la
Execute Shell
secciónAquí hay una captura de pantalla
fuente
Parece que encontré una solución:
Agregué un paso de compilación para ejecutar los siguientes comandos de shell:
fuente
git submodule update --init --recursive
Si está utilizando el módulo Jenkins Git, puede configurarlo en "Limpiar el espacio de trabajo antes de compilar", de esta manera siempre obtendrá el submódulo correcto.
fuente
Estoy usando canalización con script con el complemento de pago. Si desea que los submódulos sean los mismos que en su repositorio, simplemente desactive la opción trackingSubmodules de esta manera:
fuente