Наследует ли задание агента «командной строки» конвейера Azure рабочий каталог от предыдущего задания? - PullRequest
0 голосов
/ 28 сентября 2019

Мое понимание заданий агента конвейеров Azure было следующее:

  1. Каждое задание является независимым
  2. И что каждое задание 'командной строки' выполняется в своем собственном контексте с независимой областью действия.

Но если рабочий каталог Azure конвейера 'командная строка' не задан, по умолчанию используется рабочий каталог из предыдущего задания агента 'командная строка'.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Если вы используете агент, размещенный в Microsoft, каждый раз, когда вы запускаете конвейер, вы получаете новую виртуальную машину.Виртуальная машина сбрасывается после одного использования.Каждое задание может использовать разных агентов, вы не должны предполагать, что состояние из более раннего задания доступно во время последующего.И следуйте простой тест об этом.Я создаю два задания агента в моем конвейере, добавляю командную задачу и запускаю задание агента по одному.В первой командной задаче я создаю файл .txt в папке $ (Agent.BuildDirectory) и затем читаю его.enter image description here

Во втором командном задании я просто перешел в папку и попытался прочитать файл .txt.enter image description here

Наконец, вторая задача завершилась неудачно и покажет мне сообщение об ошибке.enter image description here

Если я задаю рабочий каталог в первом задании, а не задаю его во втором задании.Рабочий каталог двух задач отличается.enter image description here

0 голосов
/ 28 сентября 2019

Прежде чем ответить на вопрос, я хочу убедиться, что терминология ясна:

  • конвейеры - это общее определение вашего процесса записи, они могут содержать несколько этапов.

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

  • задания - это наборы заданий / шаговнеобходимо для реализации вашего процесса.Они содержат одну или несколько задач / шагов.

  • задачи или шаги - это фактические выполняемые действия, такие как «выполнить эту команду», «построить этот проект dotnet» ...

Окружение сбрасывается между каждым заданием (это означает, что будет использоваться новая виртуальная машина, источники извлекаются снова и т. Д.).Между каждой задачей или шагом, которые принадлежат одной и той же работе, вы сохраняете одну и ту же среду, и каждая задача будет «извлекать выгоду» из результатов (файлы, измененные, переменные среды ...) из предыдущих.
С точки зрения рабочего каталогавсе они по умолчанию имеют значение build.workingDirectory (см. переменные по умолчанию для azure devops).Если вы установите в рабочем каталоге одной задачи что-то другое, это не повлияет на другие задачи.

...