Das Jenkins-Git-Plug-in ruft die neuesten Änderungen nicht ab, bevor der Job erstellt wird
Lesezeit: 4 Minuten
Ich arbeite mit Jenkins CI und versuche, meine Jobs für die Verwendung von Git richtig zu konfigurieren.
Ich habe das Git-Plugin installiert und für einen meiner Jobs konfiguriert. Wenn ich den Job baue, erwarte ich, dass er die neuesten Änderungen für den von mir angegebenen Zweig holt und dann mit dem Rest des Build-Prozesses (z. B. Komponententests usw.) fortfährt.
Wenn ich mir die Konsolenausgabe anschaue, sehe ich
Ich sehe, dass das Plugin den richtigen Commit-Hash abruft und auscheckt, aber wenn die Tests ausgeführt werden, scheint es, als ob das Repo überhaupt nicht aktualisiert wurde. Wenn ich in Jenkins in das Repository gehe, sehe ich dort, dass die letzten Änderungen nie gezogen wurden.
Sollte es nicht ziehen, bevor es versucht zu bauen?
Dies ist eigentlich der richtige Weg, es zu tun. Ich frage mich also, warum diese Antwort nicht die ausgewählte ist.
– Mhristache
4. Oktober 2016 um 16:05 Uhr
Diese Option ist am 2.6 verfügbar.
– Abhijeet
11. August 2017 um 3:55 Uhr
Dies ist für mich unter „Trigger erstellen“ > „Pipeline“ > „Zusätzliche Verhaltensweisen“.
– Kyral
23. Februar 2018 um 1:21 Uhr
Ich versuche seit 2 Tagen dieses Problem zu lösen. Damit hat es funktioniert. Ich habe einen Feature-Zweig feature/xx dass Jenkins immer wieder alte Commits statt der neusten bekam.
– Shafiq al-Shaar
26. April 2019 um 18:02 Uhr
Es wird auch alle nicht verfolgten/ignorierten Dateien entfernen. Gibt es eine Möglichkeit, nur nachverfolgte Dateien zurückzusetzen?
– Mostafa Lavaei
16. Mai 2020 um 1:21 Uhr
Ich glaube, Jenkins zieht die Änderungen und baut in seinem eigenen tmp-Verzeichnis. Ihr Repository-Verzeichnis wird also nicht aktualisiert, obwohl Jenkins den neuen Code ordnungsgemäß in seiner eigenen Sandbox erstellt.
Meine Lösung dafür bestand darin, einen “Git Pull” -Schritt in meinen Build-Prozess wie folgt einzufügen:
Wenn ein neuer Commit an mein GitHub-Repo geliefert wird:
1. Mein Projekt erstellen
Führen Sie bei Erfolg die folgenden Schritte nach dem Build aus:
1. Shell ausführen:
cd /your/repo/directory/
git pull
Sie können den Befehl “git pull” natürlich so ändern, dass er alles tut, was Sie tun müssen, wenn ein “pull” für Sie nicht funktioniert.
Danke, das hat mich auf den richtigen Weg gebracht. Was am Ende für mich funktionierte, war: git pull -s recursive -X their origin myBranch
– HRVHacker
16. Mai 2016 um 7:06 Uhr
Siehe auch Lösung von Abhijeet.
– hiaclibe
12. April 2018 um 8:16 Uhr
Wo haben Sie den Git-Pull in die Jenkins-Konfigurationen aufgenommen? Ich bin verwirrt bitte helft mir.
– Alphatyp
30. Juli 2019 um 11:10 Uhr
Für mich (in einem Fall mit skriptbasierter Pipeline) bestand die Problemumgehung darin, den Aufruf „checkout scm“ hinzuzufügen, ohne dass der Arbeitsbereich und die „letzten Änderungen“ nicht aktualisiert wurden. Der Nachteil scheint die Workspace-Bereinigung zu sein, die in diesem Fall standardmäßig ausgeführt wird (wie ich aus dem Protokoll sehe). Nur das Ziehen scheint noch nicht implementiert zu sein, ich habe ein Ticket zu diesem Problem gefunden: issues.jenkins.io/browse/JENKINS-52916.
– Alexander Samoylov
5. Juni 2021 um 11:41 Uhr
Verwenden Sie für Leute, die die Jenkins-Pipeline mit dem Git-Plugin verwenden Wipe Out repository & force clone unter Additional Behaviours von SCM Sektion.
Ich weiß, die Frage ist alt, aber es gibt einen anderen Weg, dies zu tun. In dem Umgebung bauen Abschnitt, wählen Sie “Löschen Sie den Arbeitsbereich, bevor der Build beginnt“
Siehe Screenshot unten,
Dadurch wird der Arbeitsbereich tatsächlich jedes Mal bereinigt und Sie erhalten den aktualisierten Code.
Versuchen Sie, Ihren Verzweigungspfad in diesem Format einzufügen:
refs/remotes/<remoteRepoName>/<branchName>
Tracks/checks out the specified branch.
E.g. refs/remotes/origin/master