【问题标题】:Argo stop workflow early, mark completeArgo 提前停止工作流程,标记完成
【发布时间】:2021-02-04 07:41:18
【问题描述】:

假设我有一个包含 5 个步骤的工作流程。

步骤 2 可能会或可能不会创建一个文件作为其输出(然后将其用作后续步骤的输入)。

  • 如果创建了文件,我想运行后续步骤。
  • 如果在第 2 步中没有创建文件,我想将工作流标记为已完成,并且不执行第 3 步到第 5 步。

我确信一定有一种简单的方法可以做到这一点,但我不知道怎么做。

我尝试在没有创建文件时让第 2 步返回非零退出代码,然后使用 when: "{{steps.step2.outputs.exitCode}} == 0" 在第 3 步,但仍执行第 4 步和第 5 步(更不用说将第 2 步标记为“失败”)

所以我没有想法,非常感谢任何建议。

【问题讨论】:

    标签: kubernetes argo-workflows argoproj


    【解决方案1】:

    默认情况下,以非零退出代码退出的步骤会使工作流失败。

    我建议写一个output parameter 来确定工作流程是否应该继续。

    - name: yourstep
      container:
        command: [sh, -c]
        args: ["yourcommand; if [ -f /tmp/yourfile ]; then echo continue > /tmp/continue; fi"]
      outputs:
        parameters:
        - name: continue
          valueFrom:
            default: "stop"
            path: /tmp/continue
    

    或者,您可以使用override the fail-on-nonzero-exitcode behaviorcontinueOn

    continueOn:
      failed: true
    

    我会提防continueOn.failed: true。如果您的命令出于意外原因抛出非零退出代码,则工作流不会像应有的那样失败,并且该错误可能不会被注意到。

    【讨论】:

      猜你喜欢
      • 2022-12-05
      • 2022-06-10
      • 2021-11-30
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      相关资源
      最近更新 更多