it-swarm.com.de

Jenkins Git Plugin zieht die neuesten Änderungen nicht vor dem Erstellen des Jobs

Ich arbeite mit Jenkins CI und versuche, meine Jobs richtig für die Verwendung von Git zu konfigurieren.

Ich habe das Git-Plugin installiert und für einen meiner Jobs konfiguriert. Wenn ich den Job erstelle, gehe ich davon aus, dass er die neuesten Änderungen für den von mir angegebenen Zweig übernimmt und dann mit dem restlichen Erstellungsprozess fortfährt (z. B. Komponententests usw.).

Wenn ich mir die Konsolenausgabe anschaue, sehe ich

> git fetch --tags --progress ssh://[email protected]/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 prüft, aber wenn die Tests ausgeführt werden, scheint das Repo nicht aktualisiert worden zu sein .. Wenn ich in Jenkins in das Repository gehe, sehe ich dort das Neueste Änderungen wurden nie gezogen. 

Sollte es nicht ziehen, bevor es zu bauen versucht? 

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

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

22
polarice

Ich glaube, Jenkins zieht die Änderungen ein und erstellt ein eigenes tmp-Verzeichnis. Ihr Repository-Verzeichnis wird also nicht aktualisiert, obwohl Jenkins den neuen Code in seiner eigenen Sandbox ordnungsgemäß erstellt.

Meine Lösung dafür war, einen "git pull" -Schritt in meinem Build-Prozess hinzuzufügen:

Wenn ein neues Commit an mein GitHub-Repo geliefert wird:
1. Bauen Sie mein Projekt auf

Falls erfolgreich, führen Sie die folgenden Schritte nach dem Build durch:
1. Shell ausführen:

cd /your/repo/directory/
git pull

Sie können den Befehl "git pull" natürlich ändern, um das zu tun, was Sie tun müssen, wenn ein "Pull" für Sie nicht funktioniert.

6
bpgriner

Bezieht mich auf ein Szenario, in dem der Arbeitsbereich nicht bereinigt wurde, verwendet:

  • Quellcodeverwaltung -> Zusätzliche Verhaltensweisen -> Nach dem Auschecken reinigen enter image description here

  • Andere Option ist die Verwendung von Workspace Cleanup Plugin

27
Abhijeet

Aktivieren Sie einfach das Kontrollkästchen im Bild. Prost Diese Registerkarte hat mir Kopfschmerzen erspart

0

Ich weiß, die Frage ist alt, aber es gibt einen anderen Weg, dies zu tun. Wählen Sie im Bereich Build Environment "Workspace vor dem Start des Builds löschen" aus.

Siehe den Screenshot unten.

 enter image description here

Dadurch wird der Arbeitsbereich tatsächlich jedes Mal gesäubert, und Sie erhalten den aktualisierten Code.

0
Harish Talanki

Versuchen Sie, Ihren Verzweigungspfad mit diesem Format einzufügen:

refs/remotes/<remoteRepoName>/<branchName>

Tracks/checks out the specified branch.
E.g. refs/remotes/Origin/master
0