2014-09-10 10 views
17

Sto lavorando con Jenkins CI e sto cercando di configurare correttamente i miei lavori per usare git.Jenkins Git Plugin non sta tirando le ultime modifiche prima di creare lavoro

Ho il plugin git installato e configurato per uno dei miei lavori. Quando realizzo il lavoro, mi aspetto che prenda le ultime modifiche per il ramo specificato e che prosegua con il resto del processo di generazione (ad esempio, test delle unità e così via).

Quando guardo l'output della console, vedo

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

vedo che il plugin recupera e controlli fuori la giusta commettere hash, ma quando i test eseguiti sembra come se il repository non è stato aggiornato affatto. Se vado nel deposito di Jenkins, vedo che gli ultimi cambiamenti non sono mai stati tirati.

Non dovrebbe tirare prima che cerchi di costruire?

Ho git 1.8.5 installato sulla mia macchina Jenkins, che è una versione consigliata. https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

Dopo aver controllato altre domande simili su SO, le loro risposte non erano utili per il mio problema.

risposta

5

Credo che Jenkins estrae le modifiche e crei nella propria directory tmp. Pertanto, la directory del repository non viene aggiornata, sebbene Jenkins stia creando correttamente il nuovo codice nella propria sandbox.

La mia soluzione a questo è stata quella di aggiungere un "git pull" passo nella mia processo di compilazione in questo modo:

Quando un nuovo commit viene consegnato al mio GitHub repo:
1. Costruire il mio progetto

In caso di successo, eseguire le seguenti operazioni: costruire-
1. eseguire Shell:

cd /your/repo/directory/ 
git pull 

ovviamente è possibile modificare il comando "git pull" di fare quello che ne da fare se un 'pull' non funziona per te.

+0

Grazie, questo mi ha fatto sulla buona strada. Ciò che ha funzionato per me è stato: git pull -s ricorsivo -X loro origine myBranch – gorbysbm

16

me dato si riferisce allo scenario in cui lavoro non è stato sempre ripulita, utilizzato:

  • Source Code Management -> Comportamenti aggiuntivi -> Clean dopo la partenza enter image description here

  • L'altra opzione è usare Workspace Cleanup Plugin

+0

Questo è in realtà il modo corretto per farlo. Quindi mi chiedo perché questa risposta non è quella selezionata. – maximi

+1

Non capisco perché questo non è il comportamento predefinito ... – ambe5960

+0

Questa opzione è disponibile su 2.6. – Abhijeet

0

so la domanda è vecchia, ma c'è un altro modo per farlo.Nella sezione Build Environment, selezionare "area di lavoro Elimina prima costruzione inizia"

vedere la schermata qui sotto,

enter image description here

Questo effettivamente pulire l'area di lavoro ogni volta e quindi si otterrà il codice aggiornato

Problemi correlati