不过我还是很好奇是否有人想出了创造性的解决方法来实现这个功能。
最近这个答案收到了一些负评,请注意,这个答案适用于在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
属性中使用,以确保调度程序仅响应该特定更改源。这使您能够配置多个更改源和多个调度程序,以响应明确选择的更改源。
实际上我不明白你为什么说它不支持多个存储库...你可以为每个存储库创建一个轮询器和多个调度程序,这些调度程序会对不同的轮询器进行ping,并获取许多不同存储库的构建(无论是在主服务器运行的同一台机器上,还是您可以在不同的机器上拥有专用从服务器)。
你想避免有多个实例,但例如,即使在同一台机器上,主服务器和从服务器也可以共存,尽管按顺序启动和停止它们很麻烦,否则会出现冲突错误 :)
|> 目前 Buildbot 不支持多个代码库。
我不太明白问题...抱歉。你是指必须运行多个主服务器吗?实际上,Buildbot 开发人员建议这样做,但相反的方式对我来说有效:您可以在同一个 master.cfg
中拥有多个从属(瀑布图中的列),并为每个从属使用不同类型的第一步骤的 BuildFactory
,例如:Git(repourl=...)
和/或 Mercurial(repourl=...)
等。
每个从属将从不同的代码库克隆/拉取,并且您甚至可以添加一些在后续步骤中需要的其他检出(使用 maven 或直接使用您的 scm 客户端)。唯一的问题是,如果只有一个唯一的 master.cfg
文件,则所有构建器都只有一种获取更改通知的方法;例如,我们有 PBChangeSource()
(主服务器通过远程代码进行通知,与其无关)。例如,如果您有一个具有良好 PBChangeSource 支持的 SCM(例如 svn、hg、git)和另一个支持较差的 SCM(例如 MKS),则应该有两个主服务器实例以应对此情况。
希望能对您有所帮助。