我正在尝试使用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}}"]
如果我将example argo loop用于:
json.dump([i for i in range(20, 31)], sys.stdout)
它打印出数字范围,没有问题。
我认为问题是由于它不是一个简单的项目而是一个对象,而 {{item}} 需要更改,但我找不到任何文档。
>答案 0 :(得分:1)
您需要将消耗参数步骤的参数调整为:
arguments:
parameters:
- name: result
value: "{{item.name}}"
withParam: "{{steps.generate-parameter.outputs.result}}"
这是因为Argo正在解析getresult步骤的JSON输出。