buildbot可以使用相同的构建器进行白天提交构建和夜间完全重建吗?

时间:2012-06-14 07:58:29

标签: continuous-integration buildbot

我正在使用buildbot作为持续集成工具。它非常适合在 Linux Windows 平台上运行提交构建和夜间构建。

对于commit builds(在每次提交时触发)和nightly builds(每晚,从干净的存储库检查结构构建),我使用两个不同的构建器。但最终,除了源存储库获取步骤之外,它们都运行相同的命令。此外,在http瀑布视图中,它们占据两列,而一个仅在白天使用,另一列仅在夜间使用。

我想知道是否有可能只有一个构建器可以同时执行每晚构建和每日提交构建?

(这会增加每晚重置提交版本的好处!)


编辑:解决方案

在Tom Prince回答之后,我设法使用'doStepIf'来设置所有这些。它需要在夜间调度程序中设置属性,并在SVN步骤之前将此属性用于RemoveDirectory步骤的doStepIf。

commit = AnyBranchScheduler( name="commit", treeStableTimer=5*60,
                             builderNames=["builder"] )

nightly = Nightly( name='nightly', hour=23, minute=40,
                   properties={'full':True},
                   builderNames=["builder"] )

def IsFullBuild(step):
     return step.build.getProperties().has_key('full')
            and step.build.getProperty('full')

factory.addStep( RemoveDirectory( dir="build", doStepIf=IsFullBuild ) )
factory.addStep( SVN( ... ) )

1 个答案:

答案 0 :(得分:3)

您当前可以通过在其中一个调度程序中设置属性,并使用由doStepIf控制的两个步骤来执行此操作,因此只有一个运行。

另一个需要对buildbot进行微小更改的选项是使mode参数可渲染,这样您就可以使用属性来控制用于更新存储库的模式。