6

我正在尝试使用Argo循环遍历 JSON 对象数组,但是工作流正在返回:

failed to resolve {{item}}

工作流配置如下:

- name: output-parameter
   steps:
    - - name: generate-parameter
        template: getresult
    - - name: consume-parameter
         template: print-result
         arguments:
           parameters:          
           - name: result
           value: "{{item}}"
         withParam: "{{steps.generate-parameter.outputs.result}}"      


 - name: getresult
   script:
     image: python:alpine3.6
     command: [python]
     source: |        
       import json
       import sys

       json.dump([{"name":"Foo"},{"name":"Doe"}], sys.stdout)

 - name: print-result
   inputs:
     parameters:
     - name: result
   container:
     image: crweu.azurecr.io/ubuntu_run:v1.0.6
     command: [sh, -c]
     args: ["echo {{inputs.parameters.result}}"]

如果我使用示例 argo 循环

json.dump([i for i in range(20, 31)], sys.stdout)

它可以毫无问题地打印出数字范围。

我认为问题是由于它不是一个简单的项目,它是一个对象并且{{item}}需要更改,但我无法找到任何文档。

4

1 回答 1

5

您需要将使用参数步骤的参数调整为:

         arguments:
           parameters:          
           - name: result
             value: "{{item.name}}"
         withParam: "{{steps.generate-parameter.outputs.result}}"      

这是因为 Argo 正在解析 getresult 步骤的 JSON 输出。

于 2019-08-12T10:23:52.800 回答