【问题标题】:Support for multiple repositories using Buildbot使用 Buildbot 支持多个存储库
【发布时间】:2010-05-08 19:46:46
【问题描述】:

目前 Buildbot 不支持多个存储库。如果希望拥有此功能,则需要运行 Buildbot 的单独实例。

我仍然很好奇是否有人想出了一个创造性的解决方法来让这个功能正常工作。

【问题讨论】:

标签: buildbot


【解决方案1】:

更新

此答案最近收到了一些反对意见,请注意,此答案适用于 2012 年底/2013 年初发布/使用的 buildbot 版本,可能不适用于未来版本。

原答案

正如@Macke 所说,buildbot (>= 0.8.x) 支持多个项目/存储库。这是通过如下配置完成的:

# Set configuration to watch the Git repository for possible
# changes. When a change does occur the schedulers will be
# notified with the project data (TestProj).
c['change_source'] = []
c['change_source'].append(
        GitPoller( 
                repourl ='git://github.com/SO/my_test_project.git',
                project = 'TestProj',  
                branch  = 'master',
                workdir = '/home/buildmaster/repos/TestProj'
        )
)

# Set the schedule to run on each change, but only for the project
# specified above via the project information.
c['schedulers'] = []
c['schedulers'].append(
        SingleBranchScheduler(
                name = "TestProj-master",
                builderNames = ['TestProj-master-builder'],
                change_filter = ChangeFilter(
                        project = 'TestProj',
                        branch  = 'master'
                )
        )
)

您可以看到更改源中的project 参数随后在调度程序的change_filter 属性中再次使用,以确保调度程序仅响应该特定更改源。这允许您配置多个更改源和多个调度程序来响应明确选择的更改源。

【讨论】:

    【解决方案2】:

    0.8.7p1 release起,buildbot支持multiple codebases

    【讨论】:

    • 如何使用它们?您能否提供多个代码库功能的最小工作示例?
    【解决方案3】:

    确实,我不明白您说它不支持多个存储库的原因......您可以为每个存储库创建一个轮询器和多个调度程序来 ping 不同的轮询器并获取许多不同存储库的构建(可以在主机运行的同一台机器上,或者您可以在不同的机器上拥有一个专用的从机)。

    你想避免有多个实例,但是例如,master和slave在同一台机器上共存,即使按顺序启动和停止它们很痛苦,否则你会得到冲突错误:)

    【讨论】:

      【解决方案4】:

      |> 目前 Buildbot 不支持多个存储库。

      我不太明白这个问题.. 抱歉。你的意思是你必须运行多个主服务器? buildbot 开发人员实际上建议这样做,但对我来说正好相反:您可以在同一个 master.cfg 中拥有多个从属服务器(瀑布中的列),并为每个或他们拥有一个 BuildFactory 并具有不同的第一步类型:Git(repourl=...) 和/或 Mercurial(repourl=...) 等。

      每个都将从不同的存储库中克隆/提取,您甚至可以添加一些后续步骤中需要的检查(使用 maven 或直接使用您的 scm 客户端)。拥有唯一的master.cfg 文件的唯一问题是所有构建者都只有一种获取更改通知的方法;我们有例如PBChangeSource()(远程代码通知主人,它无关)。例如,如果您有一个支持良好 PBChangeSource(例如 svn、hg、git)的 SCM 和另一个支持不好的 SCM(例如 MKS),那么您应该有两个主服务器实例来应对这种情况。

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-04
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-31
        相关资源
        最近更新 更多