目前 Buildbot 不支持多个存储库。如果希望拥有此功能,则需要运行 Buildbot 的单独实例。
我仍然很好奇是否有人想出了一个创造性的解决方法来让这个功能正常工作。
目前 Buildbot 不支持多个存储库。如果希望拥有此功能,则需要运行 Buildbot 的单独实例。
我仍然很好奇是否有人想出了一个创造性的解决方法来让这个功能正常工作。
此答案最近收到了一些反对意见,请注意,此答案适用于 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
属性中再次使用,以确保调度程序仅响应该特定更改源。这允许您配置多个更改源和多个调度程序来响应明确选择的更改源。
自0.8.7p1 发布以来,buildbot 支持多个代码库
事实上,我不明白你说它不支持多个存储库的原因......你可以为每个存储库创建一个轮询器和多个调度程序来 ping 不同的轮询器并获取许多不同存储库的构建(在主机运行的同一台机器,或者您可以在不同的盒子上有一个专用的从机)。
你想避免有多个实例,但是例如,主从在同一台机器上共存,即使按顺序启动和停止它们很痛苦,否则你会得到冲突错误:)
|> 目前 Buildbot 不支持多个存储库。
我真的不明白这个问题..对不起。你的意思是你必须运行多个主服务器?buildbot 开发人员实际上建议这样做,但对我来说恰恰相反:您可以拥有相同的master.cfg
多个从属服务器(瀑布中的列),并且每个或它们BuildFactory
具有不同类型的第一步:Git(repourl=...)
和/或Mercurial(repourl=...)
等等
每个都将从不同的存储库中克隆/提取,您甚至可以添加更多后续步骤中需要的签出(使用 maven 或直接使用您的 scm 客户端)。拥有唯一master.cfg
文件的唯一问题是所有构建器都只有一种获取更改通知的方法;我们有例如PBChangeSource()
(远程代码通知主人,它无关)。例如,如果您有一个支持良好 PBChangeSource(例如,svn、hg、git)的 SCM 和另一个支持不好的 SCM(例如,MKS),那么您应该有两个主服务器实例来应对这种情况。
希望它会有所帮助。