Buildbot:如果got_revision与上次运行相同,我如何跳过构建?

时间:2015-12-15 08:41:48

标签: buildbot

我有一个由另一个checkin构建触发的每晚构建。 checkin构建的触发器取决于该构建的成功。换句话说,每晚构建的got_revision将始终指向最后一次通过的签入构建。

如果got_revision与上一次构建相同,我想跳过每晚构建。主配置会是什么样的?

提前致谢。

2 个答案:

答案 0 :(得分:2)

请参阅:http://docs.buildbot.net/current/manual/cfg-schedulers.html

示例:

c['schedulers'].append(
    schedulers.Nightly(name='BeforeWork',
                       branch=`default`,
                       builderNames=['builder1'],
                       dayOfWeek=0,
                       hour=[6,8],
                       minute=23,
                       onlyIfChanged=True))

onlyIfChanged=True应该做的诀窍=>当有人在过渡期间提交代码时,确保只执行构建。

答案 1 :(得分:0)

以下代码可用于doStepIf回调。如果最后一次构建是相同的修订并通过,它将跳过运行。这可以扩展到搜索所有以前的版本而不是上次运行。另外,在我最初的问题中,我要求使用got_revision。在doStepIf中,最好不要使用got_revision,因为并非所有构建都会产生有效的got_revision。

def do_step_if(step):
    cur_status = step.build.build_status
    prev_status = cur_status.getPreviousBuild()
    # this is the first build
    if prev_status==None:
        return True
    # never skip if this is a forced run
    if cur_status.getProperty("revision")==None or cur_status.getProperty("revision")=="":
        return True
    # got_revision won't be set if update step wasn't run, so better to use revision
    if prev_status.getResults()==SUCCESS and prev_status.getProperty("revision")==cur_status.getProperty("revision"):
        return False
    return True