控制执行
顺序任务能够按一定的顺序执行它的子任务,通过 steps
定义。默认情况下,顺序任务会按照子任务的前后顺序先后执行每个子任务,当某个子任务执行失败进入
FAILED
态时,顺序任务停止执行,并将剩余的子节点的状态设置为 SKIPPED
态。为了让用户能够建模一些更复杂的任务执行流程,Seele 提供了两种属性改变上述的行为,它们分别是:when
和 needs
。
when
配置
接收一个字符串,可选值:true
或 previous.ok
。默认值为 previous.ok
。
当顺序任务中的某个子任务执行失败时,Seele 会检查它的后继节点的 when
值。默认情况下,previous.ok
表示仅在前驱节点执行成功时继续运行本节点。设置为 true
可以让 Seele 即使在前驱节点执行失败时依然执行本节点。
如果你对这个属性有更好的建议,欢迎在本项目的 GitHub 仓库 (opens in a new tab)中发表 issue。
needs
配置
接收一个字符串,指定在顺序任务中它作为子任务的前驱任务的名称。
默认情况下,顺序会按照声明顺序先后执行子任务。每个子任务的前驱节点就是它相邻的前一个任务。
例如下面的例子中,one
、two
和 three
三个子任务会被按顺序执行。它们的关系如下图所示。
steps:
one: # ...
two: # ...
three: # ...
通过在 three
的配置中添加 when: one
,我们将 three
的前驱节点从 two
改变为 one
。此时,顺序任务的执行顺序发生了变化,它仍然会先执行
one
,但之后会并发执行 two
和 three
。此时它们的关系如下图所示。
当搭配 when
使用时,previous.ok
指向它的前驱任务的状态,也就是 when
指定的前驱任务。when
只能指定声明在它之前的任务名称,例如在上面的例子中我们不能在 two
中使用 when: three
。