2010-10-22 56 views
9

我想要一个小型开发人员设置一些简单的CI。两个动机 - 完整构建需要一些时间,而预期的测试套件也需要一些时间。我真的不想深入了解需要Java应用程序容器的大玩家或者其他任何需要用多种颜色显示花哨图表的东西。我会特别感兴趣的是“文化上”的Haskellish - 最好是命令行交互或配置文件,并与Darcs互操作是绝对必须中央Haskell/Darcs工具链的轻量级持续集成?

是否有这样的工具存在,还是我坚持与一个大玩家或写我自己的?

说到这一点,我记得有一个为GHC建立的建立农场。看着它,我注意到它曾经使用buildbot,现在使用自定义的构建器。虽然这些是为不同的工作流程设置的,但它们中的任何一个都可以是更简单,更直接的解决方案?

编辑:我现在用buildbot。将更新它的工作方式。编辑2:Ben Lippmeier将buildbox放在hackage上,这似乎也是本地Haskell CI解决方案的基础。它目前没有记录,可能没有满足我的需求,但在这里是:http://hackage.haskell.org/package/buildbox。他用它来编写buildbot进行修复:http://code.haskell.org/repa/repa-head/repa-bot/

回答

3

darcs团队本身使用buildbot。我并不确定自己的脚本在哪里,但我确定如果你在邮件列表或IRC上询问,他们应该很容易掌握。

+0

感谢。我认为buildbot是迄今为止最好的解决方案,尽管熟悉它有些麻烦,并且darcs集成有点没有记录。在这个过程之后,我可能会试着写下我的经历...... – sclv 2010-10-27 17:52:37

4

所以这就是我所做的。

  1. 按照说明安装buildbot-server/buildslave。
  2. 安装darcs_buildbot脚本:https://github.com/buildbot/buildbot/blob/master/master/contrib/darcs_buildbot.py
  3. 变化中_darcs /缺省应用posthook(这是一个共享回购)为以下:

申请posthook CHMOD一个+ W myrepo/_darcs/index myrepo/.darcs_buildbot-lastchange; /usr/local/bin/darcs_buildbot.py buildbotmachine:buildbotport;

应用行程,posthook

对于buildbot配置文件,像下面是一个简单的设置:

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] 

调度程序等,也需要配置按文档。

现在,只要有人推送到共享库,构建就会被触发。额外的测试命令也可以很容易地添加。

到目前为止,这已经工作了伟大的!

我想我修补的buildslave拉增量而不是整个回购,但我不记得我做什么,不知道它是否仍然较新版本的必要。