Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Для сборки кода или развертывания программного обеспечения с помощью Azure Pipelines вам потребуется по крайней мере один агент. По мере роста базы кода и команды вам потребуется несколько агентов.
При запуске конвейера система начинает одно или несколько заданий. Агент — это вычислительная инфраструктура с установленным программным обеспечением агента, выполняющим одно задание за раз.
Azure Pipelines предоставляет несколько различных типов агентов.
| Тип агента | Описание | Доступность |
|---|---|---|
| Агенты, обслуживаемые Microsoft | Агенты, размещенные и управляемые корпорацией Майкрософт. | Azure DevOps Services |
| Локальные агенты | Агенты, которых вы настраиваете и управляете, размещаются на ваших виртуальных машинах (VM). | Azure DevOps Services, Сервер Azure DevOps |
| Агенты управляемых пулов DevOps | Управляемые пулы DevOps — это полностью управляемая служба. Виртуальные машины или контейнеры, обеспечивающие работу агентов, находятся в подписке Microsoft Azure, а не в вашей собственной подписке в Azure. | Azure DevOps Services |
| Агенты масштабируемых наборов виртуальных машин Azure | Форма автономных агентов, использующих настраиваемые наборы виртуальных машин Azure и способных к автоматическому масштабированию для удовлетворения требований. Если вы рассматриваете возможность использования автомасштабируемых пулов агентов, размещенных самостоятельно, мы рекомендуем рассмотреть управляемые пулы DevOps. Дополнительные сведения см. в статье "Сравнение управляемых пулов DevOps" с агентами масштабируемых наборов виртуальных машин Azure и управляемыми пулами DevOps. |
Azure DevOps Services |
Задания можно запускать непосредственно на хост-компьютере агента или в контейнере.
Размещенные агенты Microsoft
Если конвейеры находятся в Azure Pipelines, вы можете удобно запускать задания с помощью размещенного корпорацией Майкрософт агента. При использовании агентов, размещенных корпорацией Майкрософт, обслуживание и обновление выполняются автоматически.
У вас всегда есть последняя версия образа виртуальной машины, указанного в конвейере. Каждый раз, когда вы запускаете конвейер, вы получаете новую виртуальную машину для каждой задачи в этом конвейере. Виртуальная машина удаляется после одного задания. Любое изменение, которое задание делает в файловой системе виртуальной машины, например извлечение кода, недоступно в следующем задании.
Размещенные корпорацией Майкрософт агенты могут выполнять задания непосредственно на виртуальной машине или в контейнере.
Azure Pipelines предоставляет заранее определенный пул агентов с именем Azure Pipelines с агентами, размещенными в Microsoft.
Для многих команд этот процесс является самым простым способом выполнения заданий. Сначала попробуйте, чтобы узнать, работает ли оно для вашей сборки или развертывания. В противном случае можно использовать агенты масштабируемых наборов виртуальных машин или локальный агент.
Совет
Вы можете попробовать размещенный корпорацией Майкрософт агент без оплаты.
Узнайте больше о размещённых на платформе Microsoft агентах.
Локальные агенты
Агент с собственным размещением — это агент, который вы настраиваете для выполнения заданий и управления ими самостоятельно. Вы можете использовать автономные агенты в Azure Pipelines или Azure DevOps Server. Локальные агенты обеспечивают более контроль над установкой зависимого программного обеспечения, необходимого для сборок и развертываний. Кроме того, кэши и конфигурации на уровне компьютера сохраняются от запуска до запуска, что может повысить скорость.
Хотя на каждом компьютере можно установить несколько агентов, настоятельно рекомендуется установить только один агент на компьютер. При установке двух или более агентов это может негативно повлиять на производительность и результат конвейеров.
Агент можно установить на компьютерах Linux, macOS и Windows. Вы также можете установить агент в контейнере Docker. Дополнительные сведения об установке локального агента см. в следующих источниках:
В macOS необходимо очистить специальный атрибут в архиве загрузки, чтобы предотвратить отображение защиты macOS Gatekeeper для каждой сборки в TAR-файле при ./config.sh запуске. Следующая команда очищает расширенный атрибут в файле:
xattr -c vsts-agent-osx-x64-V.v.v.tar.gz ## replace V.v.v with the version in the filename downloaded.
# then unpack the gzip tar file normally:
tar xvfz vsts-agent-osx-x64-V.v.v.tar.gz
После установки агента на компьютере можно установить любое другое программное обеспечение на этом компьютере, которое требуется для заданий.
Примечание.
Агенты обладают высокой обратной совместимостью. Любая версия агента должна быть совместима с любой версией Azure DevOps, если Azure DevOps не требует более поздней версии агента.
Мы поддерживаем только самую последнюю версию агента, так как это единственная версия, в которой гарантировано наличие всех актуальных обновлений и исправлений ошибок.
версии запускателя Node.js
Агент поставляется с несколькими версиями библиотек Node.js для поддержки целевых задач, использующих разные обработчики Node.js.
Все официальные задачи Azure DevOps используют библиотеку Node.js 20 в качестве универсального обработчика. Однако клиенты по-прежнему могут использовать пользовательские задачи, использующие версии Node.js, которые больше не поддерживаются. Авторы расширений или пользовательских задач должны обновлять и тестировать свои задачи с текущими версиями Node.js.
Дополнительные сведения о жизненном цикле запуска Node.js в Azure Pipelines см. в разделе Node.js runners в агенте Azure Pipelines.
Агенты масштабируемых наборов виртуальных машин Azure
Агенты масштабируемых наборов виртуальных машин Azure — это форма локальных агентов, которые можно автомасштабировать для удовлетворения ваших требований. Подобная гибкость снижает необходимость в постоянном запуске выделенных агентов. В отличие от хостируемых корпорацией Майкрософт агентов, у вас есть возможность выбора размера и образа машин, на которых работают агенты.
Azure Pipelines автоматически управляет масштабированием ваших агентов. Укажите следующие факторы:
- Масштабируемый набор виртуальных машин
- Количество агентов в режиме ожидания
- Максимальное количество виртуальных машин в масштабируемом наборе
Дополнительные сведения см. в разделе "Агенты масштабируемых наборов виртуальных машин Azure".
Агенты DevOps в управляемых пулах
Управляемые пулы DevOps позволяют командам разработчиков быстро и легко создавать пулы агентов Azure DevOps, адаптированные к конкретным потребностям команды.
Управляемые пулы DevOps:
- Реализует рекомендации по обеспечению безопасности.
- Предоставляет способы балансировки затрат и производительности.
- Предоставляет пути для наиболее распространенных сценариев.
- Значительно сокращает время, необходимое для создания и обслуживания пользовательских пулов.
Управляемые пулы DevOps — это эволюция пулов агентов масштабируемых наборов виртуальных машин Azure. Это упрощает создание настраиваемого пула еще дальше, повышая масштабируемость и надежность пользовательских пулов. Управляемые пулы DevOps — это полностью управляемая служба. Виртуальные машины или контейнеры, на которых работают агенты, находятся в подписке Microsoft Azure, а не в вашей подписке Azure, подобно пулам агентов в масштабируемых наборах виртуальных машин Azure. Дополнительные сведения см. в документации по управляемым пулам DevOps.
Параллельные задания
Концепция параллельных заданий представляет количество заданий, которые можно выполнять одновременно в организации. Если у вашей организации есть одно параллельное задание, вы можете выполнять одно задание одновременно в вашей организации. Все другие параллельные задания помещаются в очередь до завершения первого задания. Для выполнения двух заданий одновременно необходимо иметь два параллельных задания. В Azure Pipelines можно выполнять параллельные задания в инфраструктуре, размещенной в Microsoft, или в собственной (локальной) инфраструктуре.
Microsoft по умолчанию предоставляет бесплатный уровень обслуживания в каждой организации, включая не менее одного параллельного задания. В зависимости от количества одновременно существующих конвейеров, которые необходимо запустить, может потребоваться большее количество параллельных заданий для одновременного использования нескольких агентов, размещенных в Microsoft, или локальных агентов. Дополнительные сведения о параллельных заданиях и различных бесплатных уровнях служб см. в разделе Параллельные задания в Azure Pipelines.
Для одновременного использования нескольких агентов может потребоваться больше параллельных заданий:
Внимание
Начиная с Azure DevOps Server 2019, вы не оплачиваете самостоятельно размещенные параллельные задания в релизах. Вы ограничены только количеством агентов, которые у вас есть.
Возможности
У каждого локального агента есть набор возможностей, указывающих на то, что он может сделать. Возможности — это пары "имя-значение", которые могут быть либо:
- Возможности, обнаруженные программным обеспечением агента, называемые системными возможностями.
- Определяемые возможности, называемые пользовательскими возможностями.
Программное обеспечение агента автоматически определяет различные системные возможности. К этим возможностям относятся имя компьютера, тип операционной системы и версии определенного программного обеспечения, установленного на компьютере. Кроме того, переменные среды, определенные на компьютере, автоматически отображаются в списке системных возможностей.
При хранении переменных среды в качестве возможностей хранимые значения возможностей используются для задания переменных среды при запуске агента. Кроме того, при внесении изменений в переменные среды во время работы агента они не учитываются и не применяются ни одной задачей. Если вы не хотите, чтобы изменяющиеся конфиденциальные переменные среды сохранялись как возможности, вы можете указать агенту игнорировать их. Установите переменную среды VSO_AGENT_IGNORE, указав список переменных для игнорирования, разделённых запятыми. Например, PATH является критической переменной, которую может потребоваться игнорировать при установке программного обеспечения.
При создании конвейера необходимо указать определенные требования агента. Система отправляет задание только агентам, имеющим возможности, соответствующие требованиям , указанным в конвейере. В результате возможности агента позволяют направлять задания определенным агентам.
Требования и возможности предназначены для использования с саморазмещенными агентами, чтобы задания были сопоставлены с агентом, который соответствует требованиям задания. При использовании агентов, размещенных корпорацией Майкрософт, вы выбираете образ для агента, соответствующего требованиям задания. Хотя вы можете добавить возможности агенту, размещенному на серверах Microsoft, вам не нужно использовать возможности с агентами, размещенными на серверах Microsoft.
Настройка требований
Чтобы добавить запрос к конвейеру сборки YAML, добавьте demands: строку в pool раздел.
pool:
name: Default
demands: SpecialSoftware # exists check for SpecialSoftware
Можно проверить наличие возможности или сравнить с значением возможности. Дополнительные сведения см. в схеме YAML — требования.
Настройка возможностей агента
Вы можете просматривать сведения об агенте, включая возможности версии и системы, а также управлять его возможностями пользователя. Перейдите в пулы агентов и перейдите на вкладку "Возможности " для нужного агента.
В веб-браузере перейдите к пулам агентов:
Перейдите на вкладку "Возможности" :
На вкладке пулов агентов выберите нужный пул агентов .
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Примечание.
Размещенные корпорацией Майкрософт агенты не отображают системные возможности. Список программного обеспечения, установленного в агентах, размещенных корпорацией Майкрософт, см. в разделе "Использование размещенного майкрософт агента".
На вкладке пулов агентов выберите нужный пул.
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Чтобы зарегистрировать новую возможность в агенте, нажмите кнопку "Добавить новую возможность".
Совет
После установки нового программного обеспечения на локальном агенте необходимо перезапустить агент для отображения новой возможности. Дополнительные сведения см. в разделе "Перезапуск агента Windows", "Перезапустить агент Linux" и "Перезапустить агент Mac".
Коммуникации
Взаимодействия с Azure Pipelines
Взаимодействие с Azure DevOps Server
Агент взаимодействует с Azure Pipelines или Azure DevOps Server. Он определяет, какое задание необходимо выполнить, и сообщает журналы и состояние задания. Агент всегда инициирует эту связь.
Все сообщения от агента в Azure Pipelines или Azure DevOps Server передаются по протоколу HTTP или HTTPS в зависимости от конфигурации агента. Эта модель извлечения позволяет настроить агент для различных топологий, как показано в следующих примерах.
Ниже приведен общий шаблон взаимодействия между агентом и Azure Pipelines или Azure DevOps Server:
Пользователь регистрирует агент в Azure Pipelines или Azure DevOps Server, добавив его в пул агентов. Чтобы зарегистрировать агент в этом пуле агентов, необходимо иметь роль администратора пула агентов . Роль администратора пула агентов необходима только во время регистрации и не сохраняется на агенте. Он не используется в дальнейшем для обмена данными между агентом и Azure Pipelines или Azure DevOps Server.
После завершения регистрации агент скачивает
listener OAuth tokenи использует его для прослушивания очереди заданий.Агент отслеживает появление нового запроса задания в очереди заданий в Azure Pipelines или Azure DevOps Server, используя длинный опрос HTTP. Когда задание доступно, агент скачивает задание и
job-specific OAuth token. Azure Pipelines или Azure DevOps Server создаёт временный токен для ограниченного идентификатора, указанного в конвейере.Агент использует маркер для доступа или изменения ресурсов в Azure Pipelines или Azure DevOps Server в этом задании. Например, он использует маркер для доступа к исходному коду или отправке результатов теста.
Агент удаляет токен, специфичный для задачи
OAuth, после завершения задачи, а затем с помощью маркера OAuth прослушивателя проверяет, есть ли новый запрос на задачу.
Полезные данные сообщений, обмениваемые агентом и Azure Pipelines или Azure DevOps Server, защищены с помощью асимметричного шифрования.
Каждый агент имеет пару из открытого и закрытого ключей, причем открытый ключ обменивается данными с сервером во время регистрации. Сервер использует открытый ключ для шифрования полезных данных задания перед отправкой его агенту. Агент расшифровывает содержимое задания с помощью закрытого ключа.
Этот метод защищает секреты, хранящиеся в конвейерах или группах переменных при обмене с агентом.
Примечание.
Агент обеспечивает поддержку вывода клиентских данных в кодировке UTF-8. Однако если система не использует кодировку UTF-8, могут возникнуть некоторые проблемы с выходными данными журнала. Например, журналы могут содержать символы, которые кодирование вашей системы не распознает, поэтому они могут показаться вязкими или отсутствующими символами.
Обмен данными для развертывания на целевых серверах
Если агент используется для развертывания артефактов в наборе серверов, он должен находиться "в зоне видимости" для подключения к этим серверам. По умолчанию пулы агентов, размещенные корпорацией Майкрософт, имеют подключение к веб-сайтам и серверам Azure, работающим в Azure.
Если ваши ресурсы Azure работают в виртуальной сети Azure, вы можете получить диапазоны IP-адресов агента, где размещаются агенты Microsoft. Затем можно настроить правила брандмауэра для виртуальной сети Azure, чтобы разрешить доступ агентом.
Если локальные среды не имеют подключения к пулу агентов, размещаемому Корпорацией Майкрософт, что обычно происходит из-за промежуточных брандмауэров, необходимо вручную настроить локальные агенты на локальных компьютерах. Агенты должны иметь подключение к целевым локальным средам и доступ к Интернету для подключения к Azure Pipelines или Azure DevOps Server. Этот процесс демонстрируется в следующей схеме:
Аутентификация
Чтобы зарегистрировать агент, необходимо быть членом роли администратора в пуле агентов. Удостоверение администратора пула агентов необходимо только во время регистрации и не сохраняется на агенте. Он не используется при последующем взаимодействии между агентом и Azure Pipelines или Azure DevOps Server. Чтобы настроить агент, необходимо также быть локальным администратором на сервере.
При регистрации агента выберите из следующих типов проверки подлинности. Процесс установки агента запрашивает дополнительные сведения, необходимые для каждого типа проверки подлинности. Дополнительные сведения см. в разделе "Параметры проверки подлинности локального агента".
- Личный маркер доступа.
- Альтернативный вариант. Подключение к серверу Azure DevOps с помощью базовой проверки подлинности. При выборе "Альтернативный" появится запрос на ввод учетных данных.
Кроме того, агенты Windows имеют следующие два варианта проверки подлинности на сервере Azure DevOps Server.
- Согласование. Подключение к Azure DevOps Server в качестве пользователя, отличного от пользователя, вошедшего в систему, с помощью схемы проверки подлинности Windows (например, New Technology LAN Manager (NTLM) или Kerberos). После выбора Negotiate вам будет предложено указать учетные данные.
- Интегрировано: (по умолчанию) Подключите агент Windows к Azure DevOps Server с помощью учетных данных пользователя, вошедшего в систему, с помощью схемы проверки подлинности Windows (например, NTLM или Kerberos). После выбора этого метода вам не будет предложено указать учетные данные.
Внимание
Необходимо настроить сервер для поддержки метода проверки подлинности для использования альтернативной , переговорной или интегрированной проверки подлинности.
Метод проверки подлинности, используемый для регистрации агента, используется только во время регистрации агента. Дополнительные сведения о том, как агенты взаимодействуют с Azure Pipelines после регистрации, см. в статье "Взаимодействие с Azure Pipelines" или Azure DevOps Server.
Интерактивность и сервис
Самостоятельно размещаемый агент можно запустить как службу или как интерактивный процесс.
После настройки агента рекомендуется сначала попробовать его в интерактивном режиме, чтобы убедиться, что он работает. Затем для использования в рабочей среде рекомендуется запустить агент в одном из следующих режимов, чтобы он надежно оставался в состоянии выполнения. Эти режимы также гарантируют, что агент будет запущен автоматически при перезапуске компьютера.
Как услуга: диспетчер служб операционной системы можно использовать для управления жизненным циклом агента. Опыт автоматического обновления агента улучшается при запуске его в качестве службы.
В качестве интерактивного процесса с включенным автоматическим входом: в некоторых случаях может потребоваться запустить агент в интерактивном режиме для использования в рабочей среде (например, для выполнения тестов пользовательского интерфейса). При настройке агента для запуска в этом режиме средство сохранения экрана отключено. Некоторые политики домена могут препятствовать включению автоматического входа или отключению средства сохранения экрана. В таких случаях может потребоваться получить исключение из политики домена или запустить агент на компьютере рабочей группы, где политики домена не применяются.
Примечание.
При включении автоматического входа в систему или отключении средства сохранения экрана возникают риски безопасности. Другие пользователи могут получить доступ к компьютеру и использовать учетную запись, которая автоматически входит в систему. Если агент настроен таким образом, необходимо убедиться, что компьютер физически защищен (например, находится в защищенном объекте).
Если вы используете удаленный рабочий стол для доступа к компьютеру, на котором работает агент с автоматическим входом, закрытие удаленного рабочего стола приводит к блокировке компьютера. Все тесты пользовательского интерфейса, выполняемые в этом агенте, могут завершиться ошибкой. Чтобы избежать этой проблемы, используйте
tsconкоманду для отключения от удаленного рабочего стола. Например:%windir%\System32\tscon.exe 1 /dest:console
Учетная запись агента
Независимо от того, выполняется ли агент в качестве службы или в интерактивном режиме, можно выбрать учетную запись компьютера, используемую для запуска агента. Выбор учетной записи агента зависит исключительно от потребностей задач, выполняемых в заданиях сборки и развертывания.
Например, чтобы выполнять задачи с помощью проверки подлинности Windows для доступа к внешней службе, агент должен запускаться с помощью учетной записи с доступом к этой службе. Однако если вы выполняете тесты пользовательского интерфейса, такие как Selenium или закодированные тесты пользовательского интерфейса, требующие браузера, браузер открывается в контексте учетной записи агента.
В Windows рекомендуется использовать учетную запись службы, например сетевую службу или локальную службу. Эти учетные записи ограничены и срок действия паролей не истекает, поэтому агенту требуется меньше управления с течением времени.
Эти учетные данные отличаются от учетных данных, используемых при регистрации агента в Azure Pipelines или Azure DevOps Server.
Версия агента и обновления
Мы обновляем программное обеспечение агента каждые несколько недель в Azure Pipelines. Мы указываем версию агента в формате {major}.{minor}. Например, если версия агента — 2.1, то основная версия — это 2, а второстепенная версия — 1.
Мы поддерживаем хостинг-агентов Microsoft в актуальном состоянии. Если более новая версия агента отличается только в минорной версии, Azure Pipelines может автоматически обновлять самостоятельно хостируемые агенты. Параметр по умолчанию включен. Этот параметр можно настроить в пулах агентов , выбрав агент и выбрав параметры. Обновление запрашивается, когда компонент платформы или одна из задач в конвейере требует более новой версии агента.
При интерактивном запуске локального агента или при наличии более новой основной версии агента, возможно, потребуется вручную обновить агенты. Агентов можно обновить на вкладке "Пулы агентов" в вашей организации. Конвейеры не могут выполняться без совместимого агента.
Обновление локальных агентов
Перейдите в параметры проекта>пулы агентов.
Выберите пул агентов и нажмите кнопку "Обновить все агенты".
Вы также можете обновить агенты по отдельности, выбрав агент обновления в меню ... .
Выберите "Обновить", чтобы подтвердить.
Запрос на обновление помещается в очередь для каждого агента в пуле и выполняется при завершении любого из текущих заданий. Обновление обычно занимает всего несколько минут. Это время достаточно долго, чтобы скачать последнюю версию программного обеспечения агента (примерно 200 МБ), распакуйте его и перезапустите агент с новой версией. Вы можете отслеживать состояние агентов на вкладке "Агенты ".
Мы обновляем программное обеспечение агента с каждым обновлением сервера Azure DevOps. Мы указываем версию агента в формате {major}.{minor}. Например, если версия агента равна 2.1, то старшая версия — 2, а младшая — 1.
Если сервер Azure DevOps имеет более новую версию агента, а новый агент отличается только в дополнительной версии, он обычно может быть автоматически обновлен. Обновление запрашивается, когда компонент платформы или одна из задач, используемых в конвейере, требует более новой версии агента. Начиная с Azure DevOps Server 2019, вам не нужно ждать выпуска нового сервера. Вы можете отправить новую версию агента на уровень приложений, и эта версия предлагается в качестве обновления.
При интерактивном запуске агента или при наличии более новой основной версии агента может потребоваться вручную обновить агенты. Агент можно легко обновить на вкладке пулов агентов в коллекции проектов . Конвейеры не могут выполняться без совместимого агента.
Вы можете просмотреть версию агента. Перейдите в пулы агентов и выберите вкладку "Возможности " для требуемого агента, как описано в разделе "Настройка возможностей агента".
Чтобы активировать обновление агента программным способом, можно использовать API обновления агента , как описано в разделе "Как активировать обновления агента программным способом для определенного пула агентов?".
Для серверов без доступа к Интернету вручную скопируйте ZIP-файл агента в следующую папку, чтобы использовать его в качестве локального файла. Создайте папку агентов , если она отсутствует:
- Виндовс:
%ProgramData%\Microsoft\Azure DevOps\Agents - Линукс:
usr/share/Microsoft/Azure DevOps/Agents - Macos:
usr/share/Microsoft/Azure DevOps/Agents
Структура каталога агента
При выполнении заданий конвейера в агентах создается структура каталогов для хранения исходного кода, двоичных файлов и артефактов.
Домашний каталог агента — это каталог, в котором установлен агент. Каталог обычно расположен:
-
Размещенные корпорацией Майкрософт агенты:
C:\agents\<agent version>в Windows,/Users/runner/runners/<agent version>macOS и/home/vsts/agents/<agent version>Linux. -
Локальные агенты:
C:\agentна Windows,Users/<username>/agent(~/agent) на macOS и/home/vsts/agentна Linux.
Рабочий каталог агента содержит рабочую область, в которой хранятся выходные данные источника и заданий. Рабочий каталог обычно расположен:
-
Агент, размещенный корпорацией Майкрософт:
C:\aв Windows,/Users/runner/workв macOS и/home/vsts/workLinux. -
Саморазмещенный агент:
C:\agent\_workна Windows,~/agent/workна macOS и/home/agent/_workна Linux.
Структура рабочего каталога:
- /work directory
- /1 build directory/pipeline workspace
- /s source/working directory
- /b binaries directory
- /a artifacts staging directory
- /TestResults Test results directory
| Каталог | Описание | Примеры | Предопределенные переменные |
|---|---|---|---|
| Домашний каталог агента | Где установлен агент. | Агент, размещённый компанией Microsoft Виндовс: C:\agents\3.248.0Линукс: /home/vsts/agents/3.248.0Macos: /Users/runner/runners/3.248.0Локальный агент: Виндовс: C:\agentЛинукс: home/agent Macos: ~/agent |
Agent.HomeDirectory |
| Рабочий каталог | Где агент хранит исходный код, двоичные файлы и артефакты. | Агент, размещённый компанией Microsoft Виндовс: C:\aЛинукс: /home/vsts/workMacos: /Users/runner/workЛокальный агент: Виндовс: C:\agent\_workЛинукс: /home/agent/_work Macos: ~/agent/work |
Agent.WorkFolderAgent.RootDirectory System.WorkFolder |
| Создание каталога или рабочей области | Где выполняется задание конвейера. | Агент, размещённый компанией Microsoft Виндовс: C:\a\1Линукс: /home/vsts/work/1Macos: /Users/runner/work/1Локальный агент: Виндовс: C:\agent\_work\1Линукс: /home/agent/_work/1 Macos: ~/agent/work/1 |
Agent.BuildDirectoryPipeline.Workspace |
s — исходный или рабочий каталог |
Содержит исходный код, извлеченный из репозитория. Если в задании есть несколько checkout шагов, исходный код извлекается в каталоги, именуемые по репозиториям как подкаталог s. |
Агент, размещённый компанией Microsoft Виндовс: C:\a\1\sЛинукс: /home/vsts/work/1/sMacos: /Users/runner/work/1/sЛокальный агент: Виндовс: C:\agent\_work\1\sЛинукс: /home/agent/_work/1/s Macos: ~/agent/work/1/s |
Build.SourcesDirectory Build.RepositoryLocalPathSystem.DefaultWorkingDirectory |
b — каталог двоичных файлов |
Содержит выходные данные сборки. | Агент, размещённый компанией Microsoft Виндовс: C:\a\1\bЛинукс: /home/vsts/work/1/bMacos: /Users/runner/work/1/bЛокальный агент: Виндовс: C:\agent\_work\1\bЛинукс: /home/agent/_work/1/bMacos: ~/agent/work/1/b |
Build.BinariesDirectory |
a — промежуточный каталог артефактов |
Содержит артефакты сборки. Очищается между запусками на локальных агентах. | Агент, размещённый компанией Microsoft Виндовс: C:\a\1\aЛинукс: /home/vsts/work/1/aMacos: /Users/runner/work/1/aЛокальный агент: Виндовс: C:\agent\_work\1\aЛинукс: /home/agent/_work/1/a Macos: ~/agent/work/1/a |
Build.StagingDirectoryBuild.ArtifactStagingDirectory System.ArtifactsDirectory |
TestResults каталог |
Содержит результаты теста. Очищается между запусками на локальных агентах. | Агент, размещённый компанией Microsoft Виндовс: C:\a\1\TestResultsЛинукс: /home/vsts/work/1/TestResultsMacos: /Users/runner/work/1/TestResultsЛокальный агент: Виндовс: C:\agent\_work\1\TestResultsЛинукс: /home/agent/_work/1/TestResults Macos: ~/agent/work/1/TestResults |
Common.TestResultsDirectory |
В размещенных корпорацией Майкрософт агентах для каждого запуска используется другой агент, поэтому рабочий каталог не сохраняется между выполнением. В локальных агентах только промежуточные каталоги артефактов и каталоги результатов тестирования очищаются между запусками по умолчанию. Дополнительные сведения об опции очистки рабочей области см. в Workspace.
Дополнительные сведения о предопределенных переменных см. в разделе .
Вопросы и ответы
Как убедиться, что у меня установлена последняя версия агента?
Перейдите на вкладку пулов агентов :
Выберите пул, содержащий агент.
Убедитесь, что агент включен.
Перейдите на вкладку возможностей:
На вкладке пулов агентов выберите нужный пул агентов .
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Примечание.
Размещенные корпорацией Майкрософт агенты не отображают системные возможности. Список программного обеспечения, установленного в агентах, размещенных корпорацией Майкрософт, см. в разделе "Использование размещенного майкрософт агента".
На вкладке пулов агентов выберите нужный пул.
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Ищите
Agent.Versionфункциональность. Это значение можно сравнить с последней опубликованной версией агента на странице агента Azure Pipelines .Каждый агент автоматически обновляется при выполнении задачи, требующей более новой версии агента. Если вы хотите вручную обновить некоторые агенты, щелкните пул правой кнопкой мыши и выберите пункт "Обновить все агенты".
Можно ли обновить агенты, которые являются частью пула серверов Azure DevOps?
Да. Начиная с Azure DevOps Server 2019, можно настроить сервер для поиска файлов пакетов агента на локальном диске. Эта конфигурация переопределяет версию по умолчанию, которая была включена с сервером во время его релиза. Этот сценарий также применяется, если сервер не имеет доступа к Интернету.
С компьютера с доступом к Интернету скачайте последнюю версию файлов пакетов агента (в .zip или .tar.gz форме) на странице выпусков агента Azure Pipelines GitHub.
Передайте скачанные файлы пакетов на каждый уровень приложений Azure DevOps Server с помощью выбранного метода (например, USB-накопителя, сетевой передачи и т. д.). Поместите файлы агента в папку
%ProgramData%\Microsoft\Azure DevOps\Agents. Если папка с названием Agents отсутствует, создайте её.Все готово! Сервер Azure DevOps теперь использует локальные файлы при обновлении агентов. Каждый агент автоматически обновляется при выполнении задачи, требующей более новой версии агента. Но если вы хотите вручную обновить некоторые агенты, щелкните пул правой кнопкой мыши и выберите "Обновить все агенты".
Есть ли у локальных агентов преимущества в плане производительности по сравнению с агентами, размещенными на серверах Майкрософт?
Во многих случаях да. При использовании локального агента можно выполнять пошаговые сборки. Например, если вы определяете конвейер, который не очищает репозиторий и не выполняет чистую сборку, сборки обычно выполняются быстрее. Вы не получаете эти преимущества с агентом, размещенным корпорацией Майкрософт, если вы не используете такие функции, как кэширование, так как агент будет уничтожен после завершения конвейера.
Для запуска вашей сборки агенту, размещенному на сервере Майкрософт, может потребоваться больше времени. Хотя часто требуется всего несколько секунд, чтобы ваше задание было назначено агенту, размещенному корпорацией Microsoft, иногда может потребоваться несколько минут, чтобы агент был выделен, в зависимости от нагрузки на нашу систему.
Можно ли установить несколько локальных агентов на одном компьютере?
Да. Этот подход может работать хорошо для агентов, выполняющих задания, которые не используют много общих ресурсов. Например, можно попробовать использовать его для агентов, запускающих выпуски, которые в основном оркестрируют развертывания и не выполняют большого объема работ непосредственно на агенте.
Вы можете обнаружить, что в других случаях вы не получаете много эффективности, выполняя несколько агентов на одном компьютере. Например, возможно, не имеет смысла использовать агентов, выполняющих сборки, которые требуют много места на диске и ресурсов ввода-вывода.
Вы также можете столкнуться с проблемами, если параллельные задания сборки используют одно и то же развертывание одноэлементного средства (например, пакеты npm). Одна сборка может обновить зависимость, а другая сборка использует ее, что может вызвать ненадежные результаты и ошибки.
Что делают агенты в случае отмены заданий конвейерной обработки?
Для агентов, размещаемых Microsoft, агент сбрасывается и возвращается в пул Azure Pipelines.
Для локальных агентов:
- При отмене конвейера агент отправляет последовательность команд в процесс, выполняющий текущий шаг.
- Первая команда отправляется с тайм-аутом в 7,5 секунды.
- Если процесс не завершается, вторая команда отправляется с тайм-аутом 2,5 секунды.
- Если процесс не завершается, агент командует его убить.
- Если процесс игнорирует два первоначальных запроса на завершение, он принудительно завершается.
Время от первоначального запроса до завершения составляет примерно 10 секунд.
Команды, выданные процессу для отмены конвейера, отличаются в зависимости от операционной системы агента:
- macOS и Linux: команды отправляются
SIGINT, затемSIGTERM, затемSIGKILL. - Windows: команды, отправляемые в процесс, сначала
Ctrl+C, затемCtrl+Break, и затемProcess.Kill.
Как активировать обновления агента программным способом для конкретного пула агентов?
Обновления агента для пула можно активировать с помощью следующего API:
POST https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0
POST https://{server url}/tfs/{collection}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0
Примечание.
Дополнительные сведения см. в статье API и сопоставление версий Azure DevOps Server.
Параметры URI
| Имя. | В | Обязательное поле | Тип | Описание |
|---|---|---|---|---|
agentId |
запрос | False |
строка | Агент для обновления. Если он не указан, обновление активируется для всех агентов. |
organization |
путь | True |
строка | Название организации Azure DevOps. |
poolId |
путь | True |
целое число (int32) | Используемый пул агентов. |
api-version |
запрос | False |
строка | Используемая версия API. Чтобы использовать эту версию API, необходимо задать значение 6.0. |
Чтобы активировать обновление агента, текст запроса должен быть пустым.
Агент Azure Pipelines является открытым исходным кодом на GitHub.
Связанный контент
Дополнительные сведения об агентах см. в следующих модулях из учебного пути "Создание приложений с помощью Azure DevOps":