使用Buildbot支持多个存储库

时间:2010-05-08 19:46:47

标签: buildbot

目前,Buildbot不支持多个存储库。如果有人想要这个,那么需要运行Buildbot的单独实例。

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

4 个答案:

答案 0 :(得分:19)

更新

此答案最近收到了一些downvotes,请注意,此答案适用于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属性中使用,以确保调度程序仅响应该特定更改源。这允许您配置多个更改源和多个调度程序,以响应显式选择的更改源。

答案 1 :(得分:1)

0.8.7p1 release以来,buildbot支持multiple codebases

答案 2 :(得分:0)

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

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

每个人都会从不同的存储库中克隆/拉取,你甚至可以在后续步骤中添加更多的签出(使用maven或直接使用scm客户端)。拥有唯一PBChangeSource()文件的唯一问题是所有构建器只有一种获取更改通知的方法;我们有例如{{1}}(主机通过远程代码通知,它无关)。例如,如果您有一个具有良好PBChangeSource支持的SCM(例如,svn,hg,git)和另一个支持不良的SCM(例如,MKS),那么您应该有两个主服务器实例以便应对它。

希望它会有所帮助。

答案 3 :(得分:0)

实际上,我不明白你说它不支持多个存储库的原因....你可以为每个存储库和多个调度程序创建一个轮询器来ping不同的轮询器并获得许多不同存储库的构建(要么在主机运行的同一台机器上,要么在另一个机箱上有专用的机箱。)

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