我在项目中使用buildbot
并且我有一个调度程序的设置,每当有变化时自动构建项目,以测试它是否编译好。这工作并且buildbot检测所有分支上的更改,但调度程序始终构建master
分支,无论更改在哪个分支上。我希望它构建更改所在的分支但我无法完成这项工作。以下是buildbot配置的相关部分:
GitPoller:
c['change_source'].append(GitPoller(
repourl='git@git.somewhere.com:someproject.git',
branches=True,
pollinterval=60))
调度程序:
c['schedulers'].append(AnyBranchScheduler(
name='all',
treeStableTimer=2*60,
builderNames=['builder 1', 'builder 2']))
这是一个帮助函数,我在几个构建器上使用它来检查代码。我几乎总是在没有参数的情况下调用它。对于特定分支,使用该参数是罕见的情况,并且上述调度程序不运行此类构建器。我假设当我不使用参数时,我总是在else
块中运行:
def CheckoutFactory(whichBranch = ''):
factory = BuildFactory()
if whichBranch:
factory.addStep(Git(repourl='git@git.somewhere.com:someproject.git', branch=whichBranch, mode='full', method='fresh', alwaysUseLatest=True, progress=True))
else:
factory.addStep(Git(repourl='git@git.somewhere.com:someproject.git', mode='full', method='fresh', alwaysUseLatest=True, progress=True))
return factory
这里有什么问题?我做错了什么?如何让buildbot在更改的分支上运行构建?
配置:
16.04.1
64位上运行。0.8.12
。 (来自回购)2.7.4
。 (来自回购)答案 0 :(得分:2)
我已经修好了。这似乎并不像我想象的那么自动。必须使用Git
属性的值将分支传递到branch
步骤。我是这样做的:
factory.addStep(Git(repourl='git@git.somewhere.com:someproject.git', branch=WithProperties('%s', 'branch'), mode='full', method='fresh', alwaysUseLatest=True, progress=True))
相关的变化是已添加此参数:
branch=WithProperties('%s', 'branch')
我使用的是已弃用的WithProperties
而不是Propery
,因为这会触发this problem,而我并不想过多地更改配置。