使用Buildbot支持多个存储库

Kif*_*fin 9 buildbot

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

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

小智 20

更新

这个答案最近收到了一些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'
                )
        )
)
Run Code Online (Sandbox Code Playgroud)

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


Chr*_*ler 0

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

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

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

希望它会有所帮助。