Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Continuous integration buildbot能否在白天提交构建和夜间完整重建时使用相同的构建器?_Continuous Integration_Buildbot - Fatal编程技术网

Continuous integration buildbot能否在白天提交构建和夜间完整重建时使用相同的构建器?

Continuous integration buildbot能否在白天提交构建和夜间完整重建时使用相同的构建器?,continuous-integration,buildbot,Continuous Integration,Buildbot,我正在使用buildbot作为持续集成工具。在Linux和Windows平台上运行提交构建和夜间构建非常有效 对于提交构建(每次提交时触发)和夜间构建(每晚从干净的存储库签出构建),我使用两个不同的构建器。但最终,除了源存储库get步骤之外,它们都运行相同的命令。此外,在http瀑布视图中,它们占据两列,而一列仅在白天使用,另一列仅在夜间使用一次 我想知道是否有可能只有一个单独的构建器来执行夜间构建和每日提交构建 (每晚重置提交构建将增加一个好处!) 编辑:解决方案 根据汤姆·普林斯的回答,我

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

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

我想知道是否有可能只有一个单独的构建器来执行夜间构建和每日提交构建

(每晚重置提交构建将增加一个好处!)


编辑:解决方案

根据汤姆·普林斯的回答,我设法用“doStepIf”设置了所有这些。它需要在nightly scheduler中设置一个属性,并在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( ... ) )

当前可以通过在其中一个调度程序中设置属性并使用两个步骤来实现这一点,这两个步骤由
doStepIf
控制,因此只运行一个


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

可渲染是什么意思?可渲染意味着可以在构建时从属性对其进行渲染。因此,您可以在调度程序中设置“mode”属性,并在SVN步骤中设置mode=util.property(“mode”)。buildbot当前不支持这一点。这对您有帮助吗?我做了一件非常类似的事情:我的夜间调度程序将“clean”属性设置为True,并且我只在设置了“clean”属性的情况下执行
removeddirectory
步骤。但是,在我的夜间调度程序运行之后,每个后续的force构建都会将“clean”属性设置为true@Sam这是我最近一次迭代,通过各种方法确定是否运行RemoveDirectory步骤:我对doStepIf使用IsNotIncremental函数来检查调度程序名称是否以“commit”开头。正确命名调度程序(commitXxx、nightlyXxx、forceXxx)就足够了。不需要特定的财产。谢谢迪迪埃,这是个好主意,我可以试试!