Настройка требований для управляемых пулов DevOps

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

В управляемых пулах DevOps требования, такие как ImageOverride, работают так же, как и в Azure Pipelines. Задание на выполнение pipeline направляется к определённому агенту, который имеет атрибуты, совпадающие с требованием. Для настройки атрибутов агента можно использовать некоторые требования, например WorkFolder и Priority.

В этой статье описываются требования, доступные в управляемых пулах DevOps и их использовании.

РабочаяПапка

Рабочая папка по умолчанию для агентов обычно D:\a\_work (или C:\a\_work, если размер виртуальной машины пула не предусматривает наличие диска D) для агентов Windows или /mnt/vss/_work для агентов Linux, и ваш конвейер может ссылаться на неё, используя Agent.WorkFolderпредопределённую переменную. Вы можете переопределить это расположение, чтобы изменить имя диска и каталога, используемого при запуске агента, указав WorkFolder требование в вашем конвейере.

Подсказка

Запрос WorkFolder настраивает рабочую папку пользовательского агента на уровне конвейера. Чтобы настроить агенты для использования пользовательского рабочего каталога для каждого агента в пуле, настройте параметр рабочей папки .

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

Задайте рабочую WorkFolder папку агента, настроив запрос в demands разделе конвейера. Если вы используете подключенный диск данных и хотите разместить рабочую папку агента на этом диске, используйте WorkFolder и укажите папку на диске данных в качестве рабочего каталога агента.

Рабочая папка по умолчанию для агентов Windows обычно находится на диске D. Вы можете ссылаться на него в конвейере с помощью Agent.WorkFolder.

В следующем примере WorkFolder для подключенного диска данных задана буква F.

pool: 
  name: fabrikam-managed-pool # Name of pool
  demands:
  - WorkFolder -equals f:\custom-work-folder

Приоритет

Priority указывает приоритет задания. Сначала выполняются задания с более высоким приоритетом. Допустимые значения: High, Mediumи Low. Значение по умолчанию — Medium.

Priority Настройте запрос в demands разделе конвейера.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - Priority -equals Low

Задания выбираются для выполнения из очереди в порядке приоритета. Например, у вас есть пул, у которого установлено максимальное количество агентов 10, и вы настроили конвейер для использования этого пула. Пул уже работает с 10 конвейерами, и ещё 20 находятся в очереди. Если вы хотите запустить конвейер приоритета, например отправить исправление, обычно он будет выполняться после 10 запущенных конвейеров и завершения 20 очередных конвейеров. Если вы задаете приоритет High при очереди срочного конвейера, он получает агент и запускается до 20 ранее поставленных в очередь конвейеров.

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

В случае с одним конвейером с несколькими заданиями:

ЗаменаИзображения

Если в пуле несколько образов, можно настроить параметры для использования определенного образа. ImageOverride Используйте запрос и укажите псевдоним изображения. Чтобы использовать образ Azure Pipelines, используйте его предопределенный псевдоним. Для всех остальных изображений необходимо настроить собственные псевдонимы.

Если в вашем пуле несколько образов, и вы не используете в конвейерах требования для указания образа, конвейеры выполняются на основе первого образа, указанного в пуле. Вы можете изменить порядок изображений в пуле, изменив порядок изображений в списке images в fabricProfile разделе (если вы используете шаблоны). Вы также можете заказать изображения в списке изображений на портале Azure, перетащив их.

В следующем примере пайплайн настроен для работы с образом, которому присвоен псевдоним ubuntu-24.04-gen2.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - ImageOverride -equals ubuntu-24.04-gen2

Внимание

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

Изменение версии изображения

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

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

ImageVersionOverride Настройте запрос в demands разделе конвейера. В следующем примере указывается значение ImageVersionOverride20250427.1.0.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - ImageVersionOverride -equals 20250427.1.0

Подсказка

Если вы считаете, что конвейер завершается сбоем из-за обновления образа, выполните процедуру, описанную в разделе «Устранение неполадок: проверьте, было ли обновление образа».

Пользовательские возможности

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

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

Если онлайн-агенты не соответствуют требованию CustomCapabilities , агент подготавливается из пула. Он помечен запросом CustomCapabilities и используется для запуска конвейера.

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

В следующем примере конвейер выполняется с помощью windows-2022 образа Azure Pipelines в пуле с сохранением состояния. Если онлайн агент готов принять задания и помечен атрибутом CustomCapabilities (заданным потоком, который ранее работал на агенте), он используется для запуска данного потока. Если веб-агент не соответствует этому требованию, следующий доступный агент используется для запуска задания, а агент помечен атрибутом CustomCapabilities . Запуски будущих конвейеров с этой нагрузкой выполняются с использованием этого агента, если он в сети и готов выполнять задания.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - ImageOverride -equals windows-2022
  - CustomCapabilities -equals MyCustomValue

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