如何为buildbot

时间:2017-02-15 16:54:36

标签: buildbot

我在项目中使用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在更改的分支上运行构建?

配置:

  • buildbot master在XUbuntu 16.04.1 64位上运行。
  • buildbot版本为0.8.12。 (来自回购)
  • Git是版本2.7.4。 (来自回购)

1 个答案:

答案 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,而我并不想过多地更改配置。