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

> git fetch --tags --progress ssh://gerrit@git-dev/Util +refs/heads/*:refs/remotes/origin/*
 > git rev-parse origin/some_branch^{commit}
Checking out Revision <latest_SHA1> (origin/some_branch)
 > git config core.sparsecheckout
 > git checkout -f <latest_SHA1>
 > git rev-list <latest_SHA1>

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?

Ich habe git 1.8.5 auf meinem Jenkins-Rechner installiert, was eine empfohlene Version ist.
https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

Nachdem ich andere ähnlich klingende Fragen zu SO überprüft hatte, waren ihre Antworten für mein Problem nicht hilfreich.

Bezieht sich auf ein Szenario, in dem der Arbeitsbereich nicht aufgeräumt wurde, verwendet:

  • Quellcodeverwaltung –> Zusätzliche Verhaltensweisen –> Nach dem Auschecken bereinigen
    Geben Sie hier die Bildbeschreibung ein

  • Eine andere Option ist die Verwendung Workspace Cleanup-Plugin

  • 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.

Geben Sie hier die Bildbeschreibung ein

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,

Geben Sie hier die Bildbeschreibung ein

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

Benutzer-Avatar
Massive Verwirrung

Aktivieren Sie einfach das Kontrollkästchen im Bild. Prost
Dieser Tab hat mir die Kopfschmerzen erspart

1281890cookie-checkDas Jenkins-Git-Plug-in ruft die neuesten Änderungen nicht ab, bevor der Job erstellt wird

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy