9

我想要一些简单的 CI 用于小型开发设置。两个动机——一个完整的构建需要一些时间,一个预期的测试套件也需要一些时间。我真的不想一头扎进需要Java应用程序容器或其他任何东西来显示具有多种颜色的精美图形等的大玩家之一。我特别对“文化上”的Haskellish感兴趣——最好是命令行交互或配置文件,与 Darcs 互操作是绝对必须的。

是否存在任何此类工具,或者我是坚持使用其中一个大玩家还是自己编写?

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

编辑:我现在要使用 buildbot。将更新它的工作原理。

Edit2:Ben Lippmeier 将 buildbox 放在了 hackage 上,这似乎也是原生 Haskell CI 解决方案的基础。它目前没有得到充分的记录,并且可能无法满足我的需求,但这里是:http ://hackage.haskell.org/package/buildbox 。他用它为 repa 编写了一个 buildbot:http ://code.haskell.org/repa/repa-head/repa-bot/ 。

4

2 回答 2

4

所以这就是我所做的。

  1. 按照说明安装 buildbot-server/buildslave。
  2. 安装 darcs_buildbot 脚本:https ://github.com/buildbot/buildbot/blob/master/master/contrib/darcs_buildbot.py
  3. 将 _darcs/defaults 中的 apply posthook(这是用于共享仓库)更改为以下内容:

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

应用运行后挂钩

至于 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 以增量而不是完整的 repo,但我不记得我做了什么,也不知道它是否仍然需要更新版本。

于 2010-12-16T16:07:15.277 回答
3

darcs 团队本身使用buildbot。我不确定脚本在哪里,但我敢肯定,如果您在邮件列表或 IRC 上询问,它们应该很容易获得。

于 2010-10-27T04:54:08.090 回答