2010-10-22 8 views
9

Je veux un CI simple pour une petite configuration de développement. Deux motivations - une version complète prend un certain temps, et une suite de tests anticipée prendra également du temps. Je préférerais ne pas plonger tête première dans l'un des grands joueurs qui ont besoin d'un conteneur d'application java ou autre pour montrer des graphismes fantaisistes avec plusieurs couleurs, etc. Je serais intéressé par quelque chose de "culturellement" Haskellish - de préférence en ligne de commande ou fichiers de configuration, et interop avec Darcs est l'absolu doit.Intégration continue légère pour une chaîne d'outils centralisée Haskell/Darcs?

Est-ce que de tels outils existent, ou est-ce que je suis coincé avec l'un des grands joueurs ou en train d'écrire le mien?

En parlant de cela, je me souviens qu'il y a une ferme de construction mis en place pour GHC. En le regardant, je remarque qu'il utilisait auparavant buildbot et utilise maintenant un constructeur personnalisé. Bien que ceux-ci soient configurés pour un flux de travail différent, l'un ou l'autre serait-il une solution plus simple et plus simple?

Editer: Je vais avec buildbot pour le moment. Mettra à jour avec comment cela fonctionne. Edit2: Ben Lippmeier a mis buildbox sur le hackage, qui semble également être le fondement d'une solution native Haskell CI. Il est actuellement sous-documenté, et probablement pas complet pour mes besoins, mais il est ici: http://hackage.haskell.org/package/buildbox. Il l'a utilisé pour écrire un buildbot pour repa: http://code.haskell.org/repa/repa-head/repa-bot/.

Répondre

3

L'équipe darcs elle-même utilise buildbot. Je ne suis pas certain de la façon dont les scripts sont diffusés, mais je suis sûr que si vous demandez sur la liste de diffusion ou sur IRC, ils devraient être faciles à obtenir.

+0

Merci.Je pense que buildbot est la meilleure solution à ce jour, même si c'est un peu difficile de se familiariser avec, et l'intégration darcs est quelque peu sous-documenté. Je pourrais essayer d'écrire mes expériences après ce processus est à travers ... – sclv

4

Alors, voici ce que j'ai fait.

  1. installez buildbot-server/buildslave conformément aux instructions.
  2. installer le script darcs_buildbot: https://github.com/buildbot/buildbot/blob/master/master/contrib/darcs_buildbot.py
  3. changement l'appliquent posthook dans _darcs/défaut (ce qui est pour une prise en pension partagée) à ce qui suit:

appliquent posthook chmod a + w myrepo/_darcs/index myrepo/.darcs_buildbot-lastchange; /usr/local/bin/darcs_buildbot.py buildbotmachine: buildbotport;

apply exécution du serveur posthook

En ce qui concerne le fichier de configuration de buildbot, quelque chose comme ce qui suit est une configuration simple:

darcsroot = "/myrepo/" 

from buildbot.process import factory 
from buildbot.steps.source import Darcs 
from buildbot.steps.shell import Compile 
from buildbot.steps.shell import Test 
f1 = factory.BuildFactory() 
f1.addStep(Darcs(repourl=darcsroot)) 
f1.addStep(Compile(command=["ghc","--make","Setup.hs"])) 
f1.addStep(Compile(command=["./Setup","configure"],warningPattern="^\(Warning:")) 
f1.addStep(Compile(command=["./Setup","build"],warningPattern="^\(Warning:"))  
b1 = {'name': "buildbot-full", 
     'slavename': "bot1name", 
     'builddir': "full", 
     'factory': f1, 
     } 
c['builders'] = [b1] 

ordonnanceurs, etc. doivent également être configurés selon docs.

Désormais, lorsque quelqu'un appuie sur le référentiel partagé, la génération est déclenchée. Des commandes de test supplémentaires peuvent également être ajoutées facilement.

Jusqu'à présent, cela a fonctionné très bien!

Je pense que j'ai corrigé le buildslave pour tirer par incrément plutôt que le repo complet, mais je ne me souviens pas de ce que j'ai fait, et je ne sais pas si c'est toujours nécessaire avec les versions plus récentes.

Questions connexes