J'ai un sous-module dans un projet à Jenkins. J'ai activé le paramètre avancé pour mettre à jour de manière récursive les sous-modules.
Lorsque je lance la construction, je constate que l'espace de travail contient les fichiers du sous-module. Le problème est que cela semble être la première révision du sous-module. Lorsque je modifie les modifications (référentiel hébergé sur GitHub), Jenkins ne semble pas mettre à jour le sous-module pour obtenir les modifications appropriées. Est-ce que quelqu'un a déjà vu ça?
On dirait que j'ai trouvé une solution:
J'ai ajouté une étape de construction pour exécuter les commandes Shell suivantes:
git submodule foreach git checkout master
git submodule foreach git pull
Notez que le Jenkins Git plugin 2. aura des "comportements de sous-module avancés", ce qui devrait assurer des mises à jour appropriées des sous-modules:
Advanced sub-modules behavior
> "Path of the reference repo to use during submodule update
"en regard de ce champ, ajoutez l’URL du sous-module Git.
Owen B mentionne dans les commentaires :
Pour le problème d'authentification, il existe maintenant une option "Utiliser les informations d'identification du référentiel parent distant par défaut"
Vu ici à JENKINS-20941 :
Savez-vous que votre référentiel Git fait toujours référence à une révision particulière d'un sous-module? Jenkins ne va pas changer automatiquement la révision.
Si vous souhaitez utiliser une nouvelle version du sous-module, vous devez le faire dans votre référentiel 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
Lorsque vous le ferez comme ceci, Jenkins vérifiera la même révision du sous-module lors de la construction. Jenkins ne décide pas à lui seul quelle révision du sous-module utiliser. C'est la différence fondamentale entre les sous-modules Git et les externes SVN.
Vous voudrez peut-être lire une bonne référence sur les sous-modules, par exemple. http://progit.org/book/ch6-6.html .
Enfin, nous avons trébuché sur un moyen de le faire et c'est simple.
Le clone initial avec les informations d'identification fonctionne correctement, mais le clonage ultérieur de submodule
échoue avec des informations d'identification incorrectes.
Source Code Management >> Additional Behaviours >> Advanced sub-modules behaviours
: Entraîne une erreur d'identification.git submodule update --init
Dans la section Execute Shell
Échoue également avec une erreur d'identification.J'utilise jenkins-1.574
.
Build Environment >> SSH Agent
.Source Code Management
Mettre à jour les sous-modules dans la section Execute Shell
git submodule sync
git submodule update --init --recursive
Voici une capture d'écran
Si vous utilisez le module Jenkins Git, vous pouvez le définir sur "Effacer l'espace de travail avant la construction", ainsi le sous-module correct sera toujours obtenu.