Обмен файлами между azure конвейером - PullRequest
1 голос
/ 04 марта 2020

В документации конвейеров Azure я читал, что:

Каждый агент может одновременно выполнять только одно задание. Для параллельного запуска нескольких заданий необходимо настроить несколько агентов.

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

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

Как новичок, после прочтения этого у меня есть некоторые сомнения:

  1. Если у меня есть 2 задания (2-е задание выполняется после 1-го) в azure -pipelines.yaml, будут ли оба задания выполняться в одном агенте? Разные задания в одном конвейере совместно используют одно и то же рабочее пространство, на которое можно ссылаться через переменную Pipeline.Workspace? (Понятно, что в случае параллельного запуска задания потребуется несколько агентов).
  2. 1-е задание создает несколько файлов за один шаг. Можно ли использовать эти файлы во втором задании без использования артефактов (обычно с использованием артефактов, первое задание публикует артефакт, а второе задание загружает его)?

Может кто-нибудь помочь мне прояснить эти сомнения?

1 Ответ

0 голосов
/ 05 марта 2020

Если у меня есть 2 задания (2-е задание запускается после 1-го) в azure -pipelines.yaml, будут ли оба задания выполняться в одном агенте?

Строго говоря НЕТ, ни UI, ни YAML не могут этого достичь.

Как видно из документа: Каждый агент может запускать только одно задание за один раз. Наши логики проектирования c, теоретически, одно задание является независимым работает индивидуально, связь между различными заданиями требует использования «промежуточного программного обеспечения», например variable, artifact и др. c.

Делать по-разному задания в том же конвейере совместно используют одно и то же рабочее пространство, на которое можно ссылаться через переменную Pipeline.Workspace?

Sample1:

У меня 2 задания в одном конвейере один job01, а другой job02.

В job01 я создаю один json файл в $(Pipeline.Workspace) имен project.json:

enter image description here

В job02 распечатайте список файлов, который по пути $(Pipeline.Workspace):

enter image description here

Как видите, второе задание не может получить доступ к выходному каталогу первого задания.


НО , есть один особый случай, когда конвейер работает с пулом самоагента, и в этом пуле существует только один агент.

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

Sample2:

То же, что и в предыдущем примере, но на этот раз измените рабочий пул на тот, который содержит только 1 агент.

enter image description here

1-е задание создает несколько файлов за один шаг. Можно ли использовать эти файлы во втором задании, не используя артефакты

Я думаю, что мое приведенное выше описание особого случая и sample2 имеет ответ.

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

...