Bài này chúng ta lấy output của 1 task khác để sử dụng đưa vào withParam để loop cho task khách.
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: name: wf-loop-dynamic spec: entrypoint: dag-template arguments: parameters: - name: message1 value: Task 1 is executed - name: ingrest-list value: | [ { "extractor": "PythonExtractor", "table": "Table 1" }, { "extractor": "GolangExtractor", "table": "Table 2" }, { "extractor": "PHPExtractor", "table": "Table 3" } ] templates: - name: dag-template inputs: parameters: - name: message1 dag: tasks: - name: Task1 arguments: parameters: [{name: text, value: "{{inputs.parameters.message1}}"}] template: task-template - name: Task2 template: task-generate-list - name: Task3 template: task-loop-sets dependencies: [Task2] arguments: parameters: - name: extractor value: "{{item.extractor}}" - name: table value: "{{item.table}}" withParam: "{{tasks.Task2.outputs.result}}" - name: task-template inputs: parameters: - name: text script: image: python:3.8-slim command: source: | p = "{{inputs.parameters.text}}" print(p) - name: task-generate-list script: image: python:3.8-slim command: source: | import json import sys list = [("Python", "Table1"), ("Golang", "Table2"), ("PHP", "Table3")] json.dump([{"extractor": i[0], "table": i[1]} for i in list], sys.stdout) - name: task-loop-sets inputs: parameters: - name: extractor - name: table script: image: python:3.8-slim command: source: | print("Applying ", "{{inputs.parameters.extractor}}", "to the table ", "{{inputs.parameters.table}}")
Đâu tiên chúng ta sẽ sử dụng task 2 để generate ra list và output ra sdtout
đưa output của task 2 vào withParam của task3