一个步骤中可变数量的输入工件
Variable number of input artifacts into a step
我有一个菱形工作流,其中单个步骤 A
使用 withParam:
启动可变数量的分析作业 B
到 X
。作业数量基于动态信息,在第一步 运行s 之前是未知的。这一切都很好,除了我还想要一个聚合器作业 Y
到 运行 超过所有这些分析作业的输出:
B
/ \
/ C \
/ / \ \
A-->D-->Y
\ . /
\ . /
\./
X
每个分析作业 B
-X
都编写工件,Y
需要将它们全部作为输入。我不知道如何为 Y
指定输入。这可能吗?我试过传入工件 key
的 JSON 数组,但 pod 卡在 pod 初始化过程中。我找不到有关如何执行此操作的任何示例。
A
创建了几个由 B
-X
使用的工件(作为 withParam:
的一部分,每个作业一个)所以我知道我的工件存储库已设置正确设置。
每个作业 B
-X
都需要很多 CPU 所以会 运行 在不同的节点上,所以我不认为共享volume 会起作用(虽然我对跨不同节点共享 volume 了解不多)。
我将问题发布为 GitHub 问题:
https://github.com/argoproj/argo/issues/4120
解决方案是将所有输出写入作业特定的工件路径(即相同的子目录)。然后,您将该路径指定为输入 key
,argo 会将所有先前的结果解压缩到一个子目录中。您可以使用 {{workflow.name}}
创建唯一路径。
这确实意味着您只能使用工件存储库中的特定目录结构,但对我来说这是一个很小的代价。
如需完整的解决方案,请参阅 sarabala1979 在 GitHub 问题上的回答。
我有一个菱形工作流,其中单个步骤 A
使用 withParam:
启动可变数量的分析作业 B
到 X
。作业数量基于动态信息,在第一步 运行s 之前是未知的。这一切都很好,除了我还想要一个聚合器作业 Y
到 运行 超过所有这些分析作业的输出:
B
/ \
/ C \
/ / \ \
A-->D-->Y
\ . /
\ . /
\./
X
每个分析作业 B
-X
都编写工件,Y
需要将它们全部作为输入。我不知道如何为 Y
指定输入。这可能吗?我试过传入工件 key
的 JSON 数组,但 pod 卡在 pod 初始化过程中。我找不到有关如何执行此操作的任何示例。
A
创建了几个由 B
-X
使用的工件(作为 withParam:
的一部分,每个作业一个)所以我知道我的工件存储库已设置正确设置。
每个作业 B
-X
都需要很多 CPU 所以会 运行 在不同的节点上,所以我不认为共享volume 会起作用(虽然我对跨不同节点共享 volume 了解不多)。
我将问题发布为 GitHub 问题:
https://github.com/argoproj/argo/issues/4120
解决方案是将所有输出写入作业特定的工件路径(即相同的子目录)。然后,您将该路径指定为输入 key
,argo 会将所有先前的结果解压缩到一个子目录中。您可以使用 {{workflow.name}}
创建唯一路径。
这确实意味着您只能使用工件存储库中的特定目录结构,但对我来说这是一个很小的代价。
如需完整的解决方案,请参阅 sarabala1979 在 GitHub 问题上的回答。