如何获得子工作流 steps/tasks 输出?
How can I get sub workflow steps/tasks output?
我创建了一个集群工作流模板,它将执行一些任务。我将使用最后一步输出作为当前工作流参数。当我引用此模板时,我不知道如何从集群工作流 task/step.
中获取 output
集群工作流模板
apiVersion: argoproj.io/v1alpha1
kind: ClusterWorkflowTemplate
metadata:
name: gen-params
spec:
templates:
- name: tasks
steps:
- - name: prepare
template: prepare
- - name: gen-params
template: gen-params
...
工作流
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: demo
spec:
entrypoint: main
templates:
- name: main
steps:
- - name: gen-params
templateRef:
name: gen-params
template: tasks
clusterScope: true
- - name: calculate
template: calculate
arguments:
parameters:
- name: params
value: "{{steps.gen-params.steps.gen-params.outputs.result}}" # not work
...
templateRef
只是一个 link,用于填充 Workflow 步骤的 YAML。您应该与 gen-params
步骤交互,就像您只是 copy/pasted 来自 gen-params
ClusterWorkflowTemplate 的 YAML 直接进入您的新工作流一样。
在这种情况下,您应该访问 gen-params
步骤的结果:{{steps.gen-params.outputs.result}}
.
您的问题可能与 WorkflowTemplate/ClusterWorkflowTemplate 的使用无关,而更多与您试图从“嵌套”工作流步骤访问输出这一事实有关。
您可以通过在 ClusterWorkflowTemplate 中定义顶级 tasks
模板的输出参数来实现此目的,该参数的值取自该 tasks
模板中最后一步的输出结果。
您的 WorkflowTemplate 将如下所示:
apiVersion: argoproj.io/v1alpha1
kind: ClusterWorkflowTemplate
metadata:
name: gen-params
spec:
templates:
- name: tasks
steps:
- - name: prepare
template: prepare
- - name: gen-params
template: gen-params
outputs:
parameters:
- name: "nested-gen-params-result"
valueFrom:
parameter: "{{steps.gen-params.outputs.result}}"
进行更改后,您将能够使用 {{steps.gen-params.outputs.parameters.nested-gen-params-result}}
引用顶级工作流的 ClusterWorkflowTemplate 定义步骤的输出
Argo 的 nested-workflow example 显示了其他一些类似的模式。
我创建了一个集群工作流模板,它将执行一些任务。我将使用最后一步输出作为当前工作流参数。当我引用此模板时,我不知道如何从集群工作流 task/step.
中获取output
集群工作流模板
apiVersion: argoproj.io/v1alpha1
kind: ClusterWorkflowTemplate
metadata:
name: gen-params
spec:
templates:
- name: tasks
steps:
- - name: prepare
template: prepare
- - name: gen-params
template: gen-params
...
工作流
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: demo
spec:
entrypoint: main
templates:
- name: main
steps:
- - name: gen-params
templateRef:
name: gen-params
template: tasks
clusterScope: true
- - name: calculate
template: calculate
arguments:
parameters:
- name: params
value: "{{steps.gen-params.steps.gen-params.outputs.result}}" # not work
...
templateRef
只是一个 link,用于填充 Workflow 步骤的 YAML。您应该与 gen-params
步骤交互,就像您只是 copy/pasted 来自 gen-params
ClusterWorkflowTemplate 的 YAML 直接进入您的新工作流一样。
在这种情况下,您应该访问 gen-params
步骤的结果:{{steps.gen-params.outputs.result}}
.
您的问题可能与 WorkflowTemplate/ClusterWorkflowTemplate 的使用无关,而更多与您试图从“嵌套”工作流步骤访问输出这一事实有关。
您可以通过在 ClusterWorkflowTemplate 中定义顶级 tasks
模板的输出参数来实现此目的,该参数的值取自该 tasks
模板中最后一步的输出结果。
您的 WorkflowTemplate 将如下所示:
apiVersion: argoproj.io/v1alpha1
kind: ClusterWorkflowTemplate
metadata:
name: gen-params
spec:
templates:
- name: tasks
steps:
- - name: prepare
template: prepare
- - name: gen-params
template: gen-params
outputs:
parameters:
- name: "nested-gen-params-result"
valueFrom:
parameter: "{{steps.gen-params.outputs.result}}"
进行更改后,您将能够使用 {{steps.gen-params.outputs.parameters.nested-gen-params-result}}
Argo 的 nested-workflow example 显示了其他一些类似的模式。