2010-10-22 14 views
9

Quiero un CI simple para una configuración de desarrollo pequeño. Dos motivaciones: una compilación completa lleva algo de tiempo, y una suite de pruebas anticipada también llevará algo de tiempo. Realmente preferiría no zambullirme de cabeza en uno de los grandes jugadores que requieren un contenedor de aplicaciones java o lo que sea para mostrar gráficos sofisticados con varios colores, etc. Me interesaría algo Haskellish "culturalmente" en particular, preferiblemente interacción de línea de comando o archivos de configuración, y la interoperabilidad con Darcs es el absoluto debe.Integración continua ligera para una cadena de herramientas de Haskell/Darcs centralmente

¿Existen tales herramientas, o estoy atrapado con uno de los grandes jugadores o escribiendo el mío?

Hablando de eso, recuerdo que hay una granja de compilación configurada para GHC. Mirándolo, noto que solía usar buildbot y ahora usa un constructor personalizado. A pesar de que están configurados para un flujo de trabajo diferente, ¿cualquiera de ellos sería una solución más simple y más directa?

Editar: Voy con buildbot por ahora. Se actualizará con la forma en que funciona.

Edit2: Ben Lippmeier ha puesto buildbox en hackage, que también parece ser la base para una solución Haskell CI nativa. Actualmente no está documentado, y probablemente no sea una característica completa para mis necesidades, pero aquí está: http://hackage.haskell.org/package/buildbox. Lo usó para escribir un buildbot para reparar: http://code.haskell.org/repa/repa-head/repa-bot/.

Respuesta

3

El propio equipo de darcs usa buildbot. No estoy seguro de dónde hablo en los guiones, pero estoy seguro de que si preguntas en la lista de correo o en el IRC, deberían ser fáciles de conseguir.

+0

Gracias.Creo que Buildbot es la mejor solución hasta ahora, aunque ha sido un poco difícil familiarizarme con ella, y la integración de los darcs está poco documentada. Podría tratar de escribir mis experiencias después de este proceso ... – sclv

4

Así que esto es lo que hice.

  1. instale buildbot-server/buildslave según las instrucciones.
  2. instalar el script darcs_buildbot: https://github.com/buildbot/buildbot/blob/master/master/contrib/darcs_buildbot.py
  3. cambio del aplican posthook en _darcs/por defecto (esto es para un acuerdo de recompra compartido) a los siguientes:

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

aplican una

En cuanto al archivo de configuración buildbot posthook administrada, algo así como lo siguiente es una configuración sencilla:

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] 

programadores, etc., también necesita ser configurado de acuerdo con documentos.

Ahora cada vez que alguien empuja al repositorio compartido, la compilación se activa. También se pueden agregar comandos de prueba adicionales fácilmente.

Hasta ahora, esto ha estado funcionando genial!

Creo que parcheé el buildslave para extraer incrementalmente en lugar del repositorio completo, pero no puedo recordar lo que hice, y no sé si todavía es necesario con las versiones más recientes.

Cuestiones relacionadas