Argo 提前停止工作流程,标记完成

问题描述

想象一下,我有一个包含 5 个步骤的工作流程。

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

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

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

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

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

解决方法

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

我建议编写一个 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 持谨慎态度。如果您的命令出于意外原因抛出非零退出代码,则工作流程不会像应有的那样失败,并且该错误可能不会被注意到。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...