2

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

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

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

我确信必须有一种简单的方法来做到这一点,但我无法弄清楚如何。

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

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

4

1 回答 1

1

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

我建议编写一个输出参数来确定工作流是否应该继续。

- 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

或者,您可以使用continueOn.

continueOn:
  failed: true

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

于 2021-02-05T13:50:54.073 回答