2009-03-14 3 views
8

Existe-t-il un plugin buildbot qui interrogera un référentiel git pour de nouveaux validations, comme le changes.SVNPoller actuellement inclus? Le plus proche que j'ai trouvé est git_buildbot.py, mais il fonctionne comme un hook post-commit, donc ne fonctionnera pas avec mon setup (en utilisant Github, et buildbot sur une machine que le post-commit de github ne peut atteindre) - simplement interroger le git repository fonctionnerait parfaitement.Est-ce que buildbot interroge un dépôt git pour de nouveaux commits?

J'ai actuellement une course de construction une fois une heure, mais il n'y a pas vraiment de point d'exécuter les tests à moins que quelque chose a changé ..

Répondre

9

Mise à jour: Les personnes aimables du projet Buildbot ont fait du GitPoller une source de changement officielle à partir de la version 0.8.2 et ont apporté plusieurs améliorations à l'original.


Notre société est dans une situation similaire où nos machines de construction ne peuvent pas être atteintes par le hook post-commit de GitHub. J'ai écrit une source de changement GitPoller qui peut être utilisée comme SVNPoller.

Il se trouve ici: http://github.com/wimba/buildbot/blob/master/buildbot/changes/gitpoller.py

et utilisé comme ceci:

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

Il va créer un repo local pour travailler sur (emplacement configurable), et il a seulement été testé avec git 1.7 si Votre kilométrage peut varier.

Espérons que seront intégrés dans le projet de Buildbot approprié à un moment donné, mais il a travaillé pour nous jusqu'à présent et en espérant qu'il peut être utile à d'autres :)

1

Je n'ai pas joué avec buildbot du tout, mais ne pouvait pas vous faire git fetch puis regardez la sortie de git log master..origin/master? S'il n'y a pas de nouveaux commits alors la sortie sera vide (il y a, bien sûr, une tonne d'autres options que vous pouvez utiliser sur git log). S'il y a de nouveaux commits alors faites juste un git merge et commencez votre cycle de construction/test.

0

J'aime l'approche gitpoller.py mais le moment où je l'ai trouvé un peu limité (par exemple n'envoie pas de révisions, arguments de projet) donc trouvé une solution différente:

J'ai mon propre référentiel cloné à partir de la télécommande et git_buildbot.py appelé par le post-fusion (comme décrit dans git_buildbot.py). J'ai une petite boucle qui dort et git qui tire dans ce repo qui va déclencher le hook post-fusion.

Questions connexes