【问题标题】:How to scale buildbot in a company如何在公司中扩展 buildbot
【发布时间】:2009-08-02 20:22:12
【问题描述】:

我最近一直在研究 buildbot,但由于缺乏良好的文档和示例配置,因此很难理解 buildbot 的常用用途。

根据 buildbot 手册,每个 buildmaster 负责 1 个代码库。这意味着想要在 10 个项目上使用 buildbot 的公司需要维护 10 组不同的 buildbot 安装(主从配置、开放端口、具有输出的网站等)。这真的是事情的处理方式吗?我是否缺少创建易于维护和监控的混搭的选项?

谢谢!

【问题讨论】:

  • FWIW,目前正在改进 buildbot 的扩展性,由 Mozilla 项目赞助。 (谁运行一个非常大的 buildmaster)。有关详细信息,请参阅 buildbot 邮件列表。

标签: buildbot


【解决方案1】:

在我的工作地点,我们使用 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 是附加参数,用于指定从哪个分支和 repo 中提取信息以获取信息。脚本 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 为每个构建器创建一个目录并运行该目录中的所有步骤。

【讨论】:

  • 主配置只是告诉从运行一系列终端命令。要运行不同的版本或不同的项目,您只需告诉它从不同的 repo 中提取。因为您可以个性化每个从属的命令,所以您可以让每个从属运行不同的版本/项目/任何东西。
  • 不,这与我所说的相反。从存储库中提取并运行实时构建是持续集成背后的理念。我们使用 git 进行版本控制。
  • 我终于明白你的意思了,这其实是个好主意。唯一值得一提的是 - 我们决定使用类别,以便我们现在可以根据这些类别划分瀑布视图,因此每个开发人员只能看到他感兴趣的项目。
  • 你为什么使用带有 'git pull' 的 ShellCommand 而不是实际的 Git 步骤? djmitche.github.com/buildbot/docs/0.7.11/#Git
【解决方案2】:

仅供参考,BuildBot 0.8.x 在一个主机上支持多个存储库,稍微简化了一些事情。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多