跳至内容

生命周期钩子

v3.3 及更高版本

简介

LifecycleHook 会根据条件表达式或在步骤/模板完成时触发一个操作。它可以在工作流级别或模板级别进行配置,例如分别作为workflow.statussteps.status的函数。LifecycleHook在执行期间运行且仅执行一次。一旦满足表达式条件,它将与其所属步骤或模板并行执行。

换句话说,LifecycleHook的功能类似于带有条件表达式的exit handler。注意不能将LifecycleHook命名为exit,否则它会变成退出处理器;除此之外,钩子名称没有其他限制。

工作流级别的LifecycleHook:当工作流中满足配置的表达式时执行该模板。

模板级Lifecycle-Hook:当在定义它的步骤中满足配置的表达式时执行该模板。

支持的条件

不支持的条件

  • 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"


有问题吗?

Search on GitHub Discussions and Slack.