Los submodules de Git no se actualizan en la compilation de Jenkins

Tengo un submodule en un proyecto en Jenkins. He habilitado la configuration avanzada para actualizar los submodules recursivamente. Cuando ejecuto la compilation, veo que el espacio de trabajo tiene los files del submodule. El problema es que parece ser la primera revisión del submodule. Cuando presiono cambios (repository alojado en github), jenkins no parece actualizar el submodule para get los cambios correctos. ¿Alguien ha visto esto alguna vez?

Tenga en count que el plugin Jenkins Git 2.0 tendrá "comportamientos avanzados de submodule", lo que debería garantizar actualizaciones adecuadas de los submodules:

git 2.0

Como lo comentó vikramvi :

Advanced sub-modules behavior > " Path of the reference repo to use during submodule update " contra este campo, agregue el submodule git url.

Camino

¿Sabe que su repository de git siempre se refiere a una revisión particular de un submodule? Jenkins no cambiará automáticamente la revisión.

Si desea utilizar una versión más reciente del submodule, debe hacerlo en su repository de git local:

 cd submoduledir git pull cd .. git add submoduledir git commit -m 'Updated to latest revision of submoduledir' git push # Go and watch jenkins build with the new revision of the submodule 

Cuando lo haces así, Jenkins verificará la misma revisión exacta del submodule durante la compilation. Jenkins no decide por sí solo qué revisión del submodule usar. Esta es la diferencia fundamental entre los submodules de git y los svn externos.

Es posible que desee leer una buena reference sobre los submodules, por ejemplo, http://progit.org/book/ch6-6.html

Esto se trata en la documentation del complemento de Git en el sitio de Jenkins en la sección: Submodules recursivos .

extracto

El plugin GIT admite repositorys con submodules que a su vez tienen submodules. Sin embargo, esto debe activarse: en Configuración del trabajo -> Sección Gestión del código fuente , Git -> Botón avanzado (en Sucursales para comstackr) -> Actualice recursivamente los submodules .

Ejemplo

Desde la pantalla de configuration de su trabajo, en la sección Gestión de código fuente, tire del button Agregar hacia abajo y select "Comportamiento de submodules avanzados".

s1

s2

Luego select "Actualizar submodules recursivamente":

s3

Finalmente tropecé con una manera de hacer esto y es simple.

La cuestión:

El clon inicial con cnetworkingenciales funciona bien, pero la posterior clonación de submodule falla con cnetworkingenciales incorrectas.

  1. Clonación automática avanzada de submodules: Source Code Management >> Additional Behaviours >> Advanced sub-modules behaviours : genera un error de cnetworkingencial.
  2. git submodule update --init en la sección Execute Shell también falla con el error de cnetworkingenciales.

La solución:

Estoy usando jenkins-1.574 .

  1. Verifique el Build Environment >> SSH Agent Caja del Build Environment >> SSH Agent .
  2. Seleccione las cnetworkingenciales correctas (probablemente las mismas que las seleccionadas en la sección Source Code Management )
  3. Actualizar submodules en la sección Execute Shell

     git submodule sync git submodule update --init --recursive 

Aquí hay una captura de pantalla enter image description here

Parece que encontré una solución:

Agregué un paso de compilation para ejecutar los siguientes commands de shell:

 git submodule foreach git checkout master git submodule foreach git pull 

Si está utilizando el module Jenkins Git, puede configurarlo en "Limpiar el espacio de trabajo antes de comstackr", de esta manera siempre obtendrá el submodule correcto.