2012-08-26 1 views
4

Est-il possible d'avoir plus d'une étape de vérification de la source dans BuildBot? Je ne trouve aucune documentation explicite à ce sujet, mais il semble qu'effectuer une extraction à la source dans BuildBot change également le répertoire de travail actuel en répertoire de vérification, ce qui signifie qu'il n'est pas clair où on irait à la caisse d'un autre référentiel. un script qui utilise les deux.Est-il possible d'avoir plus d'une étape de vérification de la source dans BuildBot?

Prenons l'exemple à http://buildbot.net/buildbot/docs/0.8.1/BuildFactory.html:

A partir des étapes, il semble que la caisse de CVS est effectuée et make build est exécuté. C'est deux étapes dans BuildBot, ce qui est pratique.

Cependant, si vous étiez à faire l'équivalent de la ligne de commande, il serait trois étapes:

cvs co $CVSROOT 
cd directory_that_was_created 
make build 

Où l'étape cd directory_that_was_created se passent dans BuildBot?

Mais plus important encore, que se passe-t-il si je veux avoir deux étapes source.CVS (bien, vraiment source.Git)? Dans quel répertoire suis-je après la deuxième étape? Le deuxième dépôt se retrouve-t-il dans un sous-répertoire du premier dépôt? Avec Git, il me semble que je pourrais faire de l'un un sous-module de l'autre pour m'assurer qu'ils seraient tous les deux extraits en une seule fois, bien que je préférerais ne pas le faire, si possible.

Répondre

4

OK, je l'ai compris. Je n'ai pas réalisé qu'il y a le concept d'un "workdir" associé à chaque étape qui indique où le "travail" se produit. La valeur par défaut workdir pour toutes les étapes est un répertoire nommé build.

Sur http://buildbot.net/buildbot/docs/latest/manual/cfg-buildsteps.html sous Source Commander ->Paramètres communs ->workdir, il ne reconnaît que les étapes de source sont spéciaux « en ce sens qu'ils effectuent des opérations en dehors de la workdir (comme la création de l'workdir lui-même). "

Ceci explique pourquoi il n'y a pas d'étape explicite qui correspond à une commande cd dans mon exemple ci-dessus. Pour résoudre mon problème, j'ai créé deux étapes Git, chacune avec sa propre valeur workdir. Ceci est suivi par les étapes ShellCommand suivantes qui appellent dans le répertoire approprié, sachant que les deux répertoires workdir seront frères et sœurs les uns des autres.

+1

En fait, cela ne fonctionne pas si vous utilisez un planificateur qui s'exécute en réponse à un hachage de validation particulier. Dans ce cas, les deux étapes Git essaient d'archiver le même hash, qui existe dans un repo mais pas dans l'autre. J'ai fini par lancer 'git clone' dans un' ShellCommand' à la place. Si 'Git' permettait de spécifier de toujours quitter la tête, indépendamment de ce que dit le planificateur, je n'aurais pas à le faire. – bolinfest

+0

ce problème peut être évité en spécifiant 'alwaysUseLatest = True' dans le buildstep du référentiel secondaire, évitant ainsi une tentative d'utilisation de l'autre sourceStamp de repos. – alanc10n

Questions connexes