Переменное количество входных артефактов в шаге

У меня есть рабочий процесс в ромбовидном стиле, где один шаг A запускает переменное количество аналитических заданий от B до X с использованием withParam:. Количество заданий основано на динамической информации и неизвестно до выполнения первого шага. Все это работает хорошо, за исключением того, что я также хочу, чтобы одно задание агрегатора Y выполняло выходные данные всех этих заданий анализа:

     B  
    / \
   / C \
  / / \ \
 A-->D-->Y
  \  .  /
   \ . /
    \./
     X

Каждое задание анализа _7 _-_ 8_ записывает артефакты, и Y требует их всех в качестве входных данных. Я не могу понять, как указать ввод для Y. Это возможно? Я попытался передать JSON-массив артефакта keys, но модуль застревает при инициализации модуля. Я не могу найти примеров, как это сделать.

A создает несколько артефактов, которые потребляются _13 _-_ 14_ (по одному на задание как часть withParam:), поэтому я знаю, что мой репозиторий артефактов настроен правильно.

Каждое из заданий _16 _-_ 17_ требует много ресурсов ЦП, поэтому оно будет выполняться на разных узлах, поэтому я не думаю, что общий том будет работать (хотя я мало знаю о совместном использовании томов между разными узлами).


person Johnny5    schedule 21.09.2020    source источник


Ответы (1)


Я разместил вопрос как проблему GitHub:

https://github.com/argoproj/argo/issues/4120

Решение состоит в том, чтобы записать весь вывод в путь артефакта, специфичный для задания (то есть в тот же подкаталог). Затем вы указываете этот путь как входной key, и argo распакует все предыдущие результаты в подкаталог. Вы можете использовать {{workflow.name}} для создания уникальных путей.

Это означает, что вы ограничены определенной структурой каталогов в репозитории артефактов, но для меня это была небольшая цена.

Для полного рабочего решения см. Ответ sarabala1979 по проблеме GitHub.

person Johnny5    schedule 26.09.2020