如何将参数传递给 argo 工作流 api

How to pass paramters to argo workflow api

我运行通过 argo 工作流 api 调整我的工作流,但我无法传递动态输入参数

curl  -k --request POST \
  --url https://localhost:2746/api/v1/workflows/argo \
  --header 'content-type: application/json' \
  --data '{
  "namespace": "argo",
  "serverDryRun": false,
  "workflow": {
      "metadata": {
        "generateName": "hello-world-",
        "namespace": "argo",
        "labels": {
          "workflows.argoproj.io/completed": "false"
         }
      },
     "spec": {
       "templates": [
        {
         "name": "whalesay",
         "arguments": {},
         "inputs": {
             "parameters":{
                "name":"sh@yahoo.com"

             }


         },
         "outputs": {},
         "metadata": {},
         "container": {
          "name": "",
          "image": "gandalf/patientreg",
          "command": [
            "./app"
          ],
          "args": [
            ""
          ],
          "resources": {}
        }
      }
    ],
    "entrypoint": "whalesay",
    "arguments": {}
  }
}
}'

我在 运行 工作流

时收到此错误

{"code":3,"message":"json: cannot unmarshal object into Go struct field Inputs.workflow.spec.templates.inputs.parameters of type []v1alpha1.Parameter"}%

我想通过 api 传递动态电子邮件,并在我的应用程序中接收 if 作为命令行参数,这样我就可以 运行 我的工作流程。 如何实现?

您可以将参数传递给工作流,而这些参数可以发送到工作流内的任何步骤。该参数应该有一个名称。在您的示例中,您只是将值直接传递给步骤。

这是一个有效负载示例。

    {
        "workflow": {
            "metadata": {
                "name": "awesome-dragon",
                "namespace": "argo",
                "labels": {
                    "example": "true"
                }
            },
            "spec": {
                "arguments": {
                    "parameters": [
                        {
                            "name": "workflow-arg",
                            "value": "mail.from@outside.code"
                        }
                    ]
                },
                "entrypoint": "argosay",
                "templates": [
                    {
                        "name": "argosay",
                        "inputs": {
                            "parameters": [
                                {
                                    "name": "step-level-arg",
                                    "value": "{{workflow.parameters.workflow-arg}}"
                                }
                            ]
                        },
                        "container": {
                            "name": "main",
                            "image": "argoproj/argosay:v2",
                            "command": [
                                "/argosay"
                            ],
                            "args": [
                                "echo",
                                "{{inputs.parameters.step-level-arg}}"
                            ]
                        }
                    }
                ],
                "ttlStrategy": {
                    "secondsAfterCompletion": 300
                },
                "podGC": {
                    "strategy": "OnPodCompletion"
                }
            }
        }
    }

请注意,命名参数是从外部传递到 argo 工作流的。相同的工作流参数可以用于内部的任何模板。