Если у меня есть 2 задания (2-е задание запускается после 1-го) в azure -pipelines.yaml, будут ли оба задания выполняться в одном агенте?
Строго говоря НЕТ, ни UI
, ни YAML
не могут этого достичь.
Как видно из документа: Каждый агент может запускать только одно задание за один раз. Наши логики проектирования c, теоретически, одно задание является независимым работает индивидуально, связь между различными заданиями требует использования «промежуточного программного обеспечения», например variable
, artifact
и др. c.
Делать по-разному задания в том же конвейере совместно используют одно и то же рабочее пространство, на которое можно ссылаться через переменную Pipeline.Workspace?
Sample1:
У меня 2 задания в одном конвейере один job01
, а другой job02
.
В job01
я создаю один json файл в $(Pipeline.Workspace)
имен project.json
:
В job02 распечатайте список файлов, который по пути $(Pipeline.Workspace)
:
Как видите, второе задание не может получить доступ к выходному каталогу первого задания.
НО , есть один особый случай, когда конвейер работает с пулом самоагента, и в этом пуле существует только один агент.
В настоящее время они могут работать на одном агенте, поскольку в пуле только один агент. И если вы вручную не выполняете операцию clean
в определении задания, файлы могут совместно использоваться заданиями в этом специальном сценарии, поскольку они используют постоянный локальный путь.
Sample2:
То же, что и в предыдущем примере, но на этот раз измените рабочий пул на тот, который содержит только 1 агент.
1-е задание создает несколько файлов за один шаг. Можно ли использовать эти файлы во втором задании, не используя артефакты
Я думаю, что мое приведенное выше описание особого случая и sample2
имеет ответ.
Да , Возможно. Вы можете обратиться к этому, чтобы достичь этого спроса. Но в основном мы рекомендуем использовать артефакты для передачи файлов между заданиями.