2

我正在buildbot用作持续集成工具。它可以完美地在LinuxWindows平台上运行提交构建和夜间构建。

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

我想知道是否可以只使用一个构建器来执行夜间构建和每日提交构建的配置?

(它会增加每晚重置提交构建的好处!)


编辑:一个解决方案

按照汤姆普林斯的回答,我设法使用“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( ... ) )
4

1 回答 1

3

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

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

于 2012-06-14T13:49:15.253 回答