2014-09-10 8 views
17

Ich arbeite mit Jenkins CI und versuche, meine Jobs richtig zu konfigurieren, um Git zu verwenden.Jenkins Git Plugin nicht letzten Änderungen vor dem Bau Auftrag ziehen

Ich habe das Git-Plugin installiert und für einen meiner Jobs konfiguriert. Wenn ich den Job erstelle, erwarte ich, dass er die letzten Änderungen für die von mir spezifizierte Verzweigung zieht und dann mit dem Rest des Build-Prozesses fortfährt (z. B. Komponententests usw.).

Als ich an der Konsole ausgegeben 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 holt und checkt die Hash richtige begehen, aber wenn die Tests laufen scheint es, als ob die repo nicht aktualisiert wurde überhaupt. 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 meiner Jenkins-Maschine installiert, die eine empfohlene Version ist. https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

Nachdem andere ähnliche klingende Fragen auf SO überprüft wurden, waren ihre Antworten nicht hilfreich für mein Problem.

Antwort

5

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

zu Meine Lösung war ein "git pull" Schritt in meinem Build-Prozess hinzuzufügen, wie so:

Wenn ein neues meinem GitHub Repo geliefert commit:
1. mein Projekt bauen

Wenn dies gelingt, die folgenden Schritte aus Post-Build:
1. führen Sie Shell:

cd /your/repo/directory/ 
git pull 

Sie können natürlich die "git pull" Befehl ändern zu tun, was du ne tun, wenn ein "Pull" für Sie nicht funktioniert.

+0

Danke, das hat mich auf den richtigen Weg gebracht. Was am Ende für mich funktionierte war: git pull -s rekursiv -X ihr Ursprung myBranch – gorbysbm

16

Bezieht mich Szenario, in dem Arbeitsbereich nicht aufgeräumte, verwendet zu werden:

  • Source Code Management -> Weitere Behaviors -> Reinigen nach der Kasse enter image description here

  • Andere Möglichkeit ist zu verwenden Workspace Cleanup Plugin

+0

Dies ist eigentlich der richtige Weg, es zu tun. Ich frage mich also, warum diese Antwort nicht die ausgewählte ist. – maximi

+1

Ich verstehe nicht, warum das nicht das Standardverhalten ist ... – ambe5960

+0

Diese Option ist auf 2.6 verfügbar. – Abhijeet

0

ich weiß Die Frage ist alt, aber es gibt einen anderen Weg, dies zu tun.Im Build Environment Wählen Sie im Abschnitt „Arbeitsbereich löschen, bevor Build beginnt

Screenshot unten sehen,

enter image description here

Dies wird der Arbeitsplatz tatsächlich reinigen jedes Mal, und somit erhalten Sie die Aktualisierter Code