在BuildBot中,如果上一步失败,我想要一个不执行的步骤。
例如,在下面的类中,如果test_package()
失败,我不希望install()
执行。
class Sage(Project):
distros = [RHEL7()]
tests = [SageTest()]
def test_package(self, f, dist):
HaltOnFailure=True
set_properties = {
'package_file_name': util.Property('package_file_name'),
'master_dir': dist.master_dir()
}
if isinstance(dist, RHEL7):
f.addStep(steps.Trigger(
schedulerNames=['sage-rhel7-sage-test'],
doStepIf=partial(do_step, 'sage-rhel7-sage-test'),
waitForFinish=True,
set_properties=set_properties))
def install(self, f, dist):
super(Sage, self).install(f, dist)
如何通知install()test_package()失败?
尝试使用一些常见的步骤参数:2.5.9.1. Common Parameters
例如,haltOnFailure:
f.addStep(steps.Trigger(
schedulerNames=['sage-rhel7-sage-test'],
doStepIf=partial(do_step, 'sage-rhel7-sage-test'),
waitForFinish=True,
set_properties=set_properties,
haltOnFailure=True))
您还可以尝试各种组合的doStepIf,hideStepIf,alwaysRun,haltOnFailure,flunkOnWarnings,flunkOnFailure,warnOnWarnings,warnOnFailure for your purpose
但是可能更好的做法是重构代码以在单独的步骤中使用安装功能并构建解决方案,作为具有特定条件的一系列步骤。
BuildStep是所有构建步骤的超类,因此所有子类都可以使用followig kwargs
name, description, descriptionDone, descriptionSuffix, locks, haltOnFailure,
flunkOnWarnings, flunkOnFailure, warnOnWarnings, warnOnFailure, alwaysRun,
progressMetrics, useProgress, doStepIf, hideStepIf