GoCD: Как определить всю рабочую область конвейера как артефакт для следующего этапа?

Как с помощью GoCD определить всю рабочую область этапа (как единый артефакт) для следующего этапа? Это значительно упростило бы мою настройку, в которой второй этап должен извлекать множество различных артефактов из предыдущего.

Я пробовал следующие объявления артефактов:

  1. Источник артефакта = .

Это вызывает ошибку уже при загрузке на первом этапе:

[go] The rule [.] cannot match any resource under [pipelines/mypipeline]
[go] [go] Uploading finished. Failed to upload [.]
  1. Источник артефакта = *

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

[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/.svn to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/cruise-output to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/<dir1> to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/<...> to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/<dirN> to [defaultRoot]

Вероятно, я мог бы заархивировать все сам с помощью другой задачи и определить это как артефакт, но поскольку GoCD уже заархивирует и распаковывает его на своем компьютере, я подумал, что должно быть более простое решение моей проблемы.


person dokaspar    schedule 22.06.2017    source источник


Ответы (1)


Я не эксперт, просто новичок в GoCD, но прошел через ту же боль проб и ошибок , я поделюсь синтаксисом, который, по моему опыту, работает. Для артефактов сборки в восходящем конвейере:

  • Источник: #{BUILD_DIR}/*.whl - кажется, синтаксис подстановочных знаков работает при определении артефактов сборки; ПРИМЕЧАНИЕ. Значения между фигурными скобками {XXX_XX} являются параметрами конвейера.
  • Место назначения: #{ARTIFACT_DIR} — я предпочитаю помещать все свои артефакты в отдельную папку, так как их легче достать. GoCD заархивирует и передаст папку, а затем разархивирует ее в нисходящем конвейере.

В нисходящем конвейере или на другом этапе того же конвейера при извлечении артефактов с помощью задачи «Извлечение артефакта»:

  • Источник: #{ARTIFACT_DIR} — я использую только имя каталога, чтобы получить весь каталог
  • Место назначения ./ - в этом случае выбранный каталог будет извлечен в текущую папку

ПРИМЕЧАНИЕ. Приведенный выше синтаксис предназначен для извлечения каталога артефактов только в том случае, если флажок Источником является файл (не каталог) в Задача получения артефакта не выбрана.

Мне не удалось получить файлы артефактов, когда я попытался параметризовать имя файла с параметрами конвейера или переменными среды (например, мой файловый артефакт содержал динамически сгенерированную версию), и я не нашел ничего в документации GoCD или примеров, предполагающих, что это возможно. В документах есть пример загрузки имени файла, которое является постоянным и не меняется.

Пожалуйста, поделитесь примерами параметризации файловых артефактов, если это возможно, или предлагаемыми обходными путями, если это вообще возможно.

person Emil    schedule 08.05.2021