在 Argo Workflow 中使用 Jinja 模板控制流

Using Jinja Template control flow with Argo Workflow

我有一个与 Argo Workflow & JINJA 模板相关的查询:

我知道 Argo 工作流支持 JINJA 模板的表达式,例如:{{ ... }}, 但是 Argo 工作流是否也支持 JINJA 模板控制结构,如:{% ... %} ...... 还是不?

我正在努力处理一个用例,我需要在“单一”WorkflowTemplate 中添加以下语句

{% if inputs.parameters.resources.gpu == 1 %}
    nvidia.com/gpu: {{ inputs.parameters.resources.gpu }}
{% end %}

Argo 工作流程does not currently support Jinja control structures

如果您不介意代码重复,一种解决方法是使用 conditionals 实现 gpu == 1gpu != 1 分支(作为不同的步骤)。

您也可以使用 podSpecPatch。它是要应用于 pod 规范的补丁的 JSON 字符串表示。对于 JSON 中的简单变体,您可以使用 Jinja 字符串模板。对于更复杂的突变,您可以在一个步骤中生成 JSON,然后将其用作输出参数。