BuildBot 中的条件步骤

Conditional steps in BuildBot

我正在尝试使用条件步骤使用 BuildBot 创建构建配置。特别是,我想根据前面的步骤是否失败来执行条件步骤,如下所示:

factory = util.BuildFactory()
factory.addStep(MyCoolStep())
factory.addStep(CommitWork(), doStepIf='MyCoolStepWorked')
factory.addStep(RollbackWork(), doStepIf='MyCoolStepFailed')

根据文档,'doStepIf' 采用布尔限定符。如何访问上一步的结果?或者我需要在某处设置自定义 属性 吗?我对 Python 有点陌生,所以我不确定 buildbot 主配置中各种变量和对象的范围。

Buildbot returns 中的每个步骤作为状态 SUCCESSWARNINGSSKIPPEDFAILURECANCELLEDEXCEPTION, RETRY

因此,如果 MyCoolStep 有效,它将构建状态设置为 SUCCESS,您可以检查 CommitWork 以执行它。

对于RollbackWorkflow您可以检查构建是否处于FAILURE状态并执行它。由于在此状态下跳过CommitWork,因此整体状态不会升级到SKIPPED

如果 SKIPPED 两个步骤都被隐藏,因此它们在未执行时不会污染 buildbot 输出。

def success(build):
  return build.getStatus() == SUCCESS

def failure(build):
  return build.getStatus() == FAILURE

def skipped(results, build):
  return results == SKIPPED

factory = util.BuildFactory()
factory.addStep(MyCoolStep())
factory.addStep(CommitWork(), doStepIf=success, hideStepIf=skipped)
factory.addStep(RollbackWork(), doStepIf=failure, hideStepIf=skipped)