2009-03-14 16 views
8

Esiste un plug-in buildbot che eseguirà il polling di un repository git per nuovi commit, come il changes.SVNPoller attualmente incluso?Il buildbot esegue il polling di un repository git per nuovi commit?

Il più vicino che ho trovato è git_buildbot.py, ma funziona come un hook post-commit, quindi non funzionerà con il mio setup (usando Github e buildbot su una macchina che il post-commit di github non può raggiungere) - semplicemente il polling del repository git funzionerebbe perfettamente.

Al momento ho una corsa costruzione una volta ogni ora, ma non c'è davvero qualsiasi punto eseguire i test a meno che qualcosa è cambiato ..

risposta

9

Aggiornamento: I gentili membri del progetto Buildbot hanno trasformato GitPoller in una fonte di modifica ufficiale dalla versione 0.8.2 e apportato diversi miglioramenti all'originale.


La nostra azienda è in una situazione simile in cui le nostre macchine costruire non possono essere raggiunte in post-commit hook di GitHub. Ho scritto una fonte di modifica GitPoller che può essere utilizzata come SVNPoller.

Si può trovare qui: http://github.com/wimba/buildbot/blob/master/buildbot/changes/gitpoller.py

e usato in questo modo:

from buildbot.changes.gitpoller import GitPoller 
c['change_source'] = GitPoller('[email protected]:foobaz/myrepo.git', 
           branch='great_new_feature') 

Si creerà un repo locale per lavorare fuori (posizione configurabile), ed è stato solo testato con git 1.7 così il tuo chilometraggio può variare.

speriamo che sia tirato nel progetto Buildbot adeguata ad un certo punto, ma ha lavorato per noi finora e sperando possa essere utile per gli altri :)

1

io non ho giocato con buildbot a tutti, ma non poteva fare un git fetch e poi guarda l'output di git log master..origin/master? Se non ci sono nuovi commit, l'output sarà vuoto (ci sono, ovviamente, una tonnellata di altre opzioni che puoi usare su git log). Se ci sono nuovi commit, basta fare un git merge e avviare il ciclo di build/test.

0

mi piace l'approccio gitpoller.py ma al nel momento in cui l'ho trovato un po 'limitato (ad esempio non invia revisioni, argomenti del progetto) ho trovato una soluzione diversa:

Ho il mio repository clonato dal remoto e git_buildbot.py chiamato dal hook post-merge (come descritto in git_buildbot.py). Ho un piccolo loop che dorme e git che recupera quel repository che attiverà il hook post-merge.