[[2021-06-18_Fri]] #argo
[[Argo Workflow ループ]] をネストしてループを組めるのかどうか。
[argo-workflows/parallelism-nested.yaml at master · argoproj/argo-workflows · GitHub](https://github.com/argoproj/argo-workflows/blob/master/examples/parallelism-nested.yaml) の例を参考にすると、nested loopを組めそう。
1. 外側のループで、parallel-listを展開しながら、seq-listをseq-workerへまとめて渡す。
2. 内側のループで、seq-workerは、seq-listを展開しながら、parallel-id をone-jobへ渡す。
3. one-jobを実行する。
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: parallelism-nested-
spec:
arguments:
parameters:
- name: seq-list
value: |
["a","b","c","d"]
- name: parallel-list
value: |
[1,2,3,4]
entrypoint: parallel-worker
templates:
- name: parallel-worker
inputs:
parameters:
- name: seq-list
- name: parallel-list
steps:
- - name: parallel-worker
template: seq-worker
arguments:
parameters:
- name: seq-list
value: "{{inputs.parameters.seq-list}}"
- name: parallel-id
value: "{{item}}"
withParam: "{{inputs.parameters.parallel-list}}"
- name: seq-worker
parallelism: 1
inputs:
parameters:
- name: seq-list
- name: parallel-id
steps:
- - name: seq-step
template: one-job
arguments:
parameters:
- name: parallel-id
value: "{{inputs.parameters.parallel-id}}"
- name: seq-id
value: "{{item}}"
withParam: "{{inputs.parameters.seq-list}}"
- name: one-job
inputs:
parameters:
- name: seq-id
- name: parallel-id
container:
image: alpine
command: ['/bin/sh', '-c']
args: ["echo {{inputs.parameters.parallel-id}} {{inputs.parameters.seq-id}}; sleep 10"]
```