4

我正在尝试 Argo 工作流程,并想了解如何冻结步骤。假设我有 3 步工作流,而工作流在第 2 步失败。所以我想使用成功的第 1 步的工件从第 2 步重新提交工作流。我怎样才能做到这一点?我在文档的任何地方都找不到指导。

4

1 回答 1

3

我认为您应该考虑在您的步骤中使用条件工件传递。

条件提供了一种在运行时影响工作流控制流的方法,具体取决于参数。在本例中,“print-hello”模板可能会或可能不会执行,具体取决于输入参数“should-print”。提交时

$ argo submit examples/conditionals.yaml

该步骤将被跳过,因为“应该打印”将评估为假。提交时:

$ argo submit examples/conditionals.yaml -p should-print=true

该步骤将被执行,因为“应该打印”将评估为真。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: conditional-
spec:
  entrypoint: conditional-example
  arguments:
    parameters:
    - name: should-print
      value: "false"

  templates:
  - name: conditional-example
    inputs:
      parameters:
      - name: should-print
    steps:
    - - name: print-hello
        template: whalesay
        when: "{{inputs.parameters.should-print}} == true"

  - name: whalesay
    container:
      image: docker/whalesay:latest
      command: [sh, -c]
      args: ["cowsay hello"]

如果您在每个步骤中使用条件,您将能够从您喜欢的具有适当条件的步骤开始。

在这篇文章Argo:Kubernetes的工作流引擎中也有一个战利品,作者解释了coinflip 示例中条件的使用。您可以在他们的GitHub 页面上看到许多示例。

于 2019-07-02T09:19:09.323 回答