我有一个由另一个checkin构建触发的每晚构建。 checkin构建的触发器取决于该构建的成功。换句话说,每晚构建的got_revision将始终指向最后一次通过的签入构建。
如果got_revision与上一次构建相同,我想跳过每晚构建。主配置会是什么样的?
提前致谢。
答案 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