Ich habe ein Submodul in einem Projekt in Jenkins. Ich habe die erweiterte Einstellung aktiviert, um Submodule rekursiv zu aktualisieren.
Wenn ich den Build ausführe, sehe ich, dass der Arbeitsbereich die Dateien aus dem Submodul enthält. Das Problem ist, es scheint die erste Überarbeitung des Submoduls zu sein. Wenn ich Änderungen vorschiebe (auf GitHub gehostetes Repository), scheint Jenkins das Submodul nicht zu aktualisieren, um die richtigen Änderungen zu erhalten. Hat jemand das jemals gesehen?
Dies wird in der Dokumentation zum Git-Plugin auf der Jenkins-Site unter dem Abschnitt: Rekursive Submodule behandelt .
AuszugBeispiel
Klicken Sie im Konfigurationsbildschirm Ihres Jobs im Abschnitt Quellcodeverwaltung auf die Schaltfläche Hinzufügen und wählen Sie "Erweitertes Verhalten der Submodule".
Wählen Sie dann "Submodule rekursiv aktualisieren":
quelle
Ist Ihnen bewusst, dass sich Ihr Git-Repository immer auf eine bestimmte Revision eines Submoduls bezieht ? Jenkins wird die Revision nicht automatisch ändern.
Wenn Sie eine neuere Version des Submoduls verwenden möchten, müssen Sie dies in Ihrem lokalen Git-Repository tun:
Wenn Sie dies so tun, überprüft Jenkins während des Builds genau die gleiche Version des Submoduls. Jenkins entscheidet nicht selbst, welche Revision des Submoduls verwendet werden soll. Dies ist der grundlegende Unterschied zwischen Git-Submodulen und SVN-Externals.
Vielleicht möchten Sie eine gute Referenz zu Submodulen lesen, z . B. http://progit.org/book/ch6-6.html .
quelle
Schließlich stolperte über einen Weg, dies zu tun und es ist einfach.
Das Thema:
Das anfängliche Klonen mit Anmeldeinformationen funktioniert einwandfrei, das nachfolgende
submodule
Klonen schlägt jedoch mit falschen Anmeldeinformationen fehl.Source Code Management >> Additional Behaviours >> Advanced sub-modules behaviours
führt zu einem Anmeldeinformationsfehler.git submodule update --init
in demExecute Shell
Abschnitt schlägt auch mit Anmeldeinformationsfehler fehl.Die Lösung:
Ich benutze
jenkins-1.574
.Build Environment >> SSH Agent
.Source Code Management
Abschnitt ausgewähltAktualisieren Sie die Submodule im
Execute Shell
AbschnittHier ist ein Screenshot
quelle
Es sieht so aus, als hätte ich eine Lösung gefunden:
Ich habe einen Build-Schritt hinzugefügt, um die folgenden Shell-Befehle auszuführen:
quelle
git submodule update --init --recursive
Wenn Sie das Jenkins Git-Modul verwenden, können Sie es auf "Arbeitsbereich vor dem Erstellen löschen" setzen. Auf diese Weise erhält es immer das richtige Submodul.
quelle
Ich verwende Scripted Pipelining mit dem Checkout-Plugin. Wenn Sie möchten, dass die Submodule mit denen in Ihrem Repository identisch sind, deaktivieren Sie einfach die Option trackSubmodules wie folgt:
quelle