生命周期钩子¶
v3.3 及更高版本
简介¶
LifecycleHook 会根据条件表达式或在步骤/模板完成时触发一个操作。它可以在工作流级别或模板级别进行配置,例如分别作为workflow.status或steps.status的函数。LifecycleHook在执行期间运行且仅执行一次。一旦满足表达式条件,它将与其所属步骤或模板并行执行。
换句话说,LifecycleHook的功能类似于带有条件表达式的exit handler。注意不能将LifecycleHook命名为exit,否则它会变成退出处理器;除此之外,钩子名称没有其他限制。
工作流级别的LifecycleHook:当工作流中满足配置的表达式时执行该模板。
模板级Lifecycle-Hook:当在定义它的步骤中满足配置的表达式时执行该模板。
支持的条件¶
- Exit handler variables:
workflow.status和workflow.failures templatetemplateRefarguments
不支持的条件¶
outputs不可用,因为LifecycleHook在执行期间运行,而outputs直到步骤完成才会生成。您可以使用之前步骤的输出,但不能使用您正在挂钩的步骤的输出。如果想使用输出,请改为创建一个退出处理程序 - 所有状态变量在那里都可用,因此您仍然可以有条件地决定要做什么。
通知用例¶
LifecycleHook 可用于根据工作流状态变更或模板状态变更来配置通知,如下例所示:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: lifecycle-hook-
spec:
entrypoint: main
hooks:
exit:
template: http
running:
expression: workflow.status == "Running"
template: http
templates:
- name: main
steps:
- - name: step1
template: heads
- name: heads
container:
image: alpine:3.6
command: [sh, -c]
args: ["echo \"it was heads\""]
- name: http
http:
url: http://dummy.restapiexample.com/api/v1/employees
换句话说,退出处理器就像一个工作流级别的
LifecycleHook,其表达式为workflow.status == "Succeeded"或workflow.status == "Failed"或workflow.status == "Error"。