如何在公司中扩展Buildbot

13

我最近一直在研究Buildbot,但缺乏良好的文档和示例配置使得很难理解Buildbot的常规用法。

根据Buildbot手册,每个构建主机负责一个代码库。这意味着想要在10个项目上使用Buildbot的公司需要维护10组不同的Buildbot安装(主从配置、开放端口、输出网站等)。这真的是惯常的做法吗?我是否错过了能够创建易于维护和监控的混搭选项?

谢谢!


1
值得一提的是,目前正在进行由Mozilla项目赞助的工作,以改善Buildbot的扩展性能。(他们运行着一个非常大的构建主机)。有关详细信息,请参阅Buildbot邮件列表。 - Macke
2个回答

4
在我的工作场所,我们使用Buildbot测试一种单个程序在多个架构和Python版本上的情况。我使用一个构建主管监督大约16个从属机。每组从属机从不同的repo中获取并针对Python 2.X进行测试。
根据我的经验,配置单个构建主管来运行项目混合可能很容易。但这可能不是一个好主意,因为瀑布页面(构建从属机报告结果的页面)会在超过几个从属机时变得非常拥挤。如果您习惯于滚动长瀑布页面,则这将不是一个问题。
编辑:
master.cfg中的更新命令:
test_python26_linux.addStep(ShellCommand, name = "update pygr",
    command = ["/u/opierce/PygrBuildBot/update.sh","000-buildbot","ctb"], workdir=".")

000-buildbot和ctb是额外的参数,用于指定从哪个分支和仓库拉取信息。update.sh脚本是我编写的,用于避免不相关的git问题。如果您想运行不同的项目,可以编写类似以下内容的脚本:

builder1.addStep(ShellCommand, name = "update project 1",
    command = ["git","pull","git://github.com/your_id/project1.git"], workdir=".")

 (the rest of builder1 steps)

builder2.addStep(ShellCommand, name = "update project 2",
    command = ["git","pull","git://github.com/your_id/project2.git"], workdir=".")

(the rest of builder2 steps)

两个项目不必相关。Buildbot为每个构建器创建一个目录,并在该目录中运行所有步骤。

主配置只是告诉从机运行一系列终端命令。要运行不同的版本或不同的项目,只需告诉它从不同的存储库拉取即可。因为您可以为每个从机个性化命令,所以每个从机都可以运行不同的版本/项目/任何内容。 - Owen Pierce
不,那恰恰相反。从存储库中拉取并运行实时构建是持续集成的理念。我们使用Git进行版本控制。 - Owen Pierce
我终于明白你的意思了,这实际上是个好主意。唯一值得注意的是 - 我们决定使用类别,这样我们现在可以根据这些类别划分瀑布视图,因此每个开发人员只能看到他感兴趣的项目。 - abyx
3
为什么你在使用ShellCommand时,用的是'git pull'而不是实际的Git步骤?(参考链接为buildbot文档中关于Git的说明) - Nicolás

3

提供信息,BuildBot 0.8.x支持一个主控下的多个仓库,这样有点简化了事情。


1
您可以在相关问题中看到一个示例。 - hithwen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接