Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Чтобы создать код или развернуть программное обеспечение с помощью Azure Pipelines, вам потребуется по крайней мере один агент. По мере роста базы кода и команды вам потребуется больше агентов.
При запуске конвейера система начинает одно или несколько заданий. Агент — это вычислительная инфраструктура с установленным программным обеспечением агента, выполняющим одно задание за раз.
Azure Pipelines предоставляет несколько различных типов агентов.
Тип агента | Описание | Доступность |
---|---|---|
Агенты, обслуживаемые Microsoft | Агенты, размещенные и управляемые корпорацией Майкрософт | Azure DevOps Services |
Локальные агенты | Агенты, настроенные и управляемые на виртуальных машинах | Azure DevOps Services, Azure DevOps Server |
Агенты управляемых пулов DevOps | Управляемые пулы DevOps — это полностью управляемый сервис, в котором виртуальные машины или контейнеры, обеспечивающие работу агентов, находятся на подписке Microsoft Azure, а не на вашей собственной подписке Azure. | Azure DevOps Services |
Агенты масштабируемого набора виртуальных машин Azure | Тип агентов с самостоят. размещением, использующих масштабируемые наборы виртуальных машин Azure, которые могут автоматически масштабироваться в соответствии с требованиями. Если вы рассматриваете возможность использования пулов агентов с автоматическим масштабированием, рекомендуем ознакомиться с управляемыми пулами DevOps. Для получения дополнительной информации см. Сравнение управляемых пулов DevOps с агентами масштабируемого набора виртуальных машин Azure и обзор управляемых пулов DevOps . |
Azure DevOps Services |
Задания можно выполнять непосредственно на хост-компьютере агента или в контейнере.
Размещенные агенты Microsoft
Если конвейеры находятся в Azure Pipelines, у вас есть удобный вариант для запуска заданий с помощью размещенного корпорацией Майкрософт агента. С агентами, размещенными в Microsoft, обслуживание и обновления выполняются за вас. Вы всегда получаете последнюю версию образа виртуальной машины, указанного в конвейере. Каждый раз, когда вы запускаете конвейер, вы получаете новую виртуальную машину для каждой задачи в этом конвейере. Виртуальная машина перестает использоваться после одного задания (это означает, что любое изменение, которое задание вносит в файловую систему виртуальной машины, например проверка кода, для следующего задания будет недоступно). Размещенные корпорацией Майкрософт агенты могут выполнять задания непосредственно на виртуальной машине или в контейнере.
Azure Pipelines предоставляет заранее определенный пул агентов с именем Azure Pipelines с агентами, размещенными в Microsoft.
Для многих команд это самый простой способ выполнения заданий. Вы можете сначала попробовать её и узнать, подходит ли оно для вашей сборки или развертывания. В противном случае можно использовать агенты масштабируемого набора или локальный агент.
Совет
Вы можете попробовать размещенный корпорацией Майкрософт агент без оплаты.
Узнайте больше о размещённых на платформе Microsoft агентах.
Локальные агенты
Агент, который вы настраиваете и управляете самостоятельно для выполнения заданий, является локальным агентом. Вы можете использовать автономные агенты в Azure Pipelines или Azure DevOps Server. Локальные агенты обеспечивают расширенные возможности для установки зависимого программного обеспечения, необходимого для сборок и развертываний. Кроме того, кэши и конфигурации на уровне компьютера сохраняются от запуска до запуска, что может повысить скорость.
Примечание.
Хотя на каждом компьютере можно установить несколько агентов, настоятельно рекомендуется установить только один агент на компьютер. Установка двух или нескольких агентов может негативно повлиять на производительность и результат конвейеров.
Агент можно установить на компьютер под управлением ОС Linux, macOS или Windows. Также можно установить агент в контейнере Docker. Дополнительные сведения об установке локального агента см. в следующих источниках:
Примечание.
В 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 runner
Агент поставляется с несколькими версиями библиотек NodeJS для поддержки целевых задач, которые используют различные обработчики Node.
Все официальные задачи Azure DevOps используют Node 20 в качестве универсального обработчика, однако клиенты по-прежнему могут использовать пользовательские задачи, использующие библиотеки node 6, Node 10 или Node 16. Чтобы обеспечить обратную совместимость с Node, снятым с поддержки, мы предоставляем следующие методы самообслуживания для установки указанного Node-исполнителя вручную.
Вручную установите средство выполнения Node 6 или 10. Для получения дополнительной информации см. раздел поддержка узла запуска.
Используйте задачу NodeTaskRunnerInstaller@0 в конвейерах, для которых требуется устаревшая библиотека Node 6 или 10.
Установите пакет агента, включающий Node.js версии 6 и 10.
Azure Pipelines предоставляет две версии пакетов агента.
- Пакеты vsts-agent-* поддерживают узел 6 и 10.
- Пакеты pipelines-agent-* не поддерживают узел 6 и 10. Эта версия пакета станет пакетом агента по умолчанию в будущем.
Если вы знаете, что не используете никаких задач, зависящих от Node 6 или 10, и не хотите, чтобы Node 6 или 10 был установлен на вашей машине агента, вы можете установить агент из раздела "Альтернативные загрузки агентаhttps://github.com/microsoft/azure-pipelines-agent/releases.
Агенты масштабируемого массива виртуальных машин Azure
Агенты масштабируемого набора виртуальных машин Azure — это форма локальных агентов, которые можно автомасштабировать в соответствии с вашими требованиями. Подобная гибкость снижает необходимость в постоянном запуске выделенных агентов. В отличие от агентов, размещенных на серверах Microsoft, вы имеете возможность выбирать размер и виртуальные машины, на которых запускаются агенты.
Вы указываете масштабируемый набор виртуальных машин, количество агентов для хранения в режиме ожидания, максимальное количество виртуальных машин в масштабируемом наборе, а Azure Pipelines управляет масштабированием агентов.
Дополнительные сведения см. в разделе "Агенты масштабируемого набора виртуальных машин Azure".
Совет
Управляемые пулы DevOps — это новая служба, которая является эволюцией пулов агентов масштабируемого набора виртуальных машин Azure DevOps, упрощая создание настраиваемого пула, повышая масштабируемость и надежность пользовательских пулов. Управляемые пулы DevOps — это полностью управляемая служба, в которой виртуальные машины или контейнеры, на которых работают агенты, размещены в подписке Microsoft Azure, а не в вашей собственной подписке Azure, как при использовании пулов агентов Масштабируемого набора виртуальных машин Azure DevOps.
Если вы рассматриваете возможность использования пулов агентов с автоматическим масштабированием, рекомендуем ознакомиться с управляемыми пулами DevOps. Для получения дополнительной информации см. Сравнение управляемых пулов DevOps с агентами масштабируемого набора виртуальных машин Azure и обзор управляемых пулов DevOps .
Агенты DevOps в управляемых пулах
Управляемые пулы DevOps позволяют командам разработчиков быстро и легко создавать пулы агентов Azure DevOps, адаптированные к конкретным потребностям команды.
Управляемые пулы DevOps:
- реализует рекомендации по обеспечению безопасности
- предоставляет инструменты для балансировки затрат и производительности
- предоставляет пути для наиболее распространенных сценариев
- значительно сокращает время, затраченное на создание и обслуживание пользовательских пулов
Управляемые пулы DevOps — это эволюция пулов агентов масштабируемого набора виртуальных машин Azure DevOps. Они упрощают создание настраиваемого пула, повышая масштабируемость и надежность пользовательских пулов. Управляемые пулы DevOps — это полностью управляемая служба, в которой виртуальные машины или контейнеры, на которых работают агенты, находятся в подписке Microsoft Azure, а не в вашей собственной подписке Azure, как в случае использования пулов агентов в наборах виртуальных машин Azure DevOps. Дополнительные сведения см. в документации по управляемым пулам 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 — требования.
Настройка возможностей агента
Вы можете просмотреть сведения об агенте, включая его версию и системные возможности, и управлять его возможностями пользователя, перейдя к пулам агентов и выбрав вкладку "Возможности " для нужного агента.
В веб-браузере перейдите к пулам агентов:
Войдите в свою организацию (
https://dev.azure.com/{yourorganization}
).Выберите Azure DevOps, параметры организации.
Выберите пулы агентов.
Войдите в коллекцию проектов (
http://your-server/DefaultCollection
).Выберите Azure DevOps, параметры коллекции.
Выберите пулы агентов.
Перейдите на вкладку возможностей:
На вкладке пулов агентов выберите нужный пул агентов .
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Примечание.
Размещенные корпорацией Майкрософт агенты не отображают системные возможности. Список программного обеспечения, установленного в агентах, размещенных корпорацией Майкрософт, см. в разделе "Использование размещенного майкрософт агента".
На вкладке пулов агентов выберите нужный пул.
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Чтобы зарегистрировать новую возможность в агенте, нажмите кнопку "Добавить новую возможность".
Совет
После установки нового программного обеспечения на локальном агенте необходимо перезапустить агент для отображения новой возможности. Дополнительные сведения см. в разделе "Перезапуск агента 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. После завершения регистрации агент скачивает маркер OAuth слушателя и использует его для прослушивания очереди заданий.
Агент прослушивает отправку нового запроса на задание в очереди заданий в Azure Pipelines/Azure DevOps Server с помощью длинного опроса HTTP. Когда задание доступно, агент загружает задание и токен OAuth для конкретного задания. 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 или Team Foundation Server, как показано в следующей схеме.
Аутентификация
Чтобы зарегистрировать агент, необходимо быть членом роли администратора в пуле агентов. Удостоверение администратора пула агентов необходимо только во время регистрации и не сохраняется на агенте. Он не используется при последующем взаимодействии между агентом и Azure Pipelines или Azure DevOps Server. Кроме того, чтобы настроить агента, необходимо иметь права локального администратора сервера.
При регистрации агента выберите один из следующих типов проверки подлинности, а программа установки агента запрашивает дополнительные сведения, необходимые для каждого типа проверки подлинности. Дополнительные сведения см. в разделе "Параметры проверки подлинности локального агента".
- Личный маркер доступа
- Альтернативное подключение к серверу Azure DevOps server или TFS с помощью базовой проверки подлинности. При выборе альтернативного параметра вам будет предложено указать свои учетные данные.
Кроме того, агенты Windows имеют следующие два варианта проверки подлинности на сервере Azure DevOps Server.
- Переговоры Подключиться к Azure DevOps Server как пользователем, отличающимся от вошедшего в систему, с помощью схемы проверки подлинности Windows, такой как New Technology LAN Manager (NTLM) или Kerberos. После выбора "Согласование" появится запрос на ввод учетных данных.
- Интегрированное (по умолчанию) подключение агента Windows к Azure DevOps Server с использованием учетных данных вошедшего в систему пользователя через схему проверки подлинности Windows, такую как NTLM или Kerberos. После выбора этого метода вам не будет предложено указать учетные данные.
Внимание
Сервер должен быть настроен для поддержки метода проверки подлинности для использования альтернативной, переговорной или интегрированной проверки подлинности.
Метод проверки подлинности, используемый для регистрации агента, используется только во время регистрации агента. Дополнительные сведения о том, как агенты взаимодействуют с Azure Pipelines после регистрации, см. в статье "Взаимодействие с Azure Pipelines" или Azure DevOps Server.
Интерактивность и сервис
Самостоятельно размещаемый агент можно запустить как службу или как интерактивный процесс.
После настройки агента рекомендуется сначала попробовать его в интерактивном режиме, чтобы убедиться, что он работает. Для последующей эксплуатации рекомендуется запустить агент в одном из следующих режимов, чтобы он бесперебойно продолжал работу. Эти режимы также гарантируют, что агент будет запущен автоматически при перезапуске компьютера.
Как услуга. Для управления жизненным циклом агента можно использовать диспетчер служб операционной системы. Кроме того, опыт автоматического обновления агента становится лучше, если агент работает как служба.
В качестве интерактивного процесса с включенным автоматическим входом в систему. В некоторых случаях может потребоваться интерактивный запуск агента для использования в рабочей среде, например для выполнения тестов пользовательского интерфейса. Когда агент настроен для работы в этом режиме, экранная заставка также отключается. Некоторые политики домена могут препятствовать включению автолога или отключению средства сохранения экрана. В таких случаях может потребоваться получить исключение из политики домена или запустить агент на компьютере рабочей группы, где политики домена не применяются.
Примечание.
При включении автоматического входа в систему или отключении средства сохранения экрана возникают риски безопасности, так как вы позволяете другим пользователям переходить к компьютеру и использовать учетную запись, которая автоматически входит в систему. Если агент настроен для работы таким образом, то вам необходимо обеспечить физическую защиту компьютера. Например, в безопасном объекте. Если вы используете удаленный рабочий стол для доступа к компьютеру, на котором работает агент с автоматическим входом, то, если просто закрыть удаленный рабочий стол, компьютер будет заблокирован, и тесты UI, выполняемые на этом агенте, могут завершиться ошибкой. Чтобы избежать этой проблемы, используйте команду tscon для отключения от удаленного рабочего стола. Например:
%windir%\System32\tscon.exe 1 /dest:console
Учетная запись агента
Независимо от того, выполняется ли агент в качестве службы или в интерактивном режиме, можно выбрать учетную запись компьютера, используемую для запуска агента. Выбор агентской учетной записи зависит только от потребностей задач, выполняемых в заданиях сборки и развертывания.
Например, чтобы выполнять задачи с помощью проверка подлинности Windows для доступа к внешней службе, агент должен запустить учетную запись с доступом к этой службе. Однако при выполнении тестов пользовательского интерфейса, таких как Selenium или закодированные тесты пользовательского интерфейса, для которых требуется браузер, браузер запускается в контексте учетной записи агента.
В Windows следует использовать учетную запись службы, например сетевую службу или локальную службу. Эти разрешения учетных записей ограничены и срок действия паролей не истекает, то есть агенту требуется меньше управления с течением времени.
Эти учетные данные отличаются от учетных данных, используемых при регистрации агента в Azure Pipelines или Azure DevOps Server.
Версия агента и обновления
Мы обновляем программное обеспечение агента каждые несколько недель в Azure Pipelines.
Мы указываем версию агента в формате {major}.{minor}
.
Например, если версия агента — 2.1
, то основная версия — это 2
, а второстепенная версия — 1
.
Агенты, размещенные корпорацией Майкрософт, всегда хранятся в актуальном состоянии. Если более новая версия агента отличается только минорной версией, Azure Pipelines может автоматически обновлять агенты, размещенные самостоятельно. Этот параметр можно настроить в пулах агентов, выберите вашего агента, Параметры - по умолчанию включен. Обновление запрашивается, когда компонент платформы или одна из задач, используемых в конвейере, требует более новой версии агента.
При интерактивном запуске локального агента или при наличии более новой основной версии агента, возможно, потребуется вручную обновить агенты. Вы можете легко обновить агентов на вкладке Agent pools в вашей организации. Конвейеры не могут выполняться без совместимого агента
Обновление локальных агентов
Перейдите к параметрам проекта, пулам агентов.
Выберите пул агентов и нажмите кнопку "Обновить все агенты".
Вы также можете обновить агенты по отдельности, выбрав "Обновить агент " в меню ... .
Выберите "Обновить", чтобы подтвердить обновление.
Запрос на обновление помещается в очередь для каждого агента в пуле и выполняется при завершении всех выполняемых в данный момент заданий. Обновление обычно занимает всего несколько минут . Достаточно долго, чтобы скачать последнюю версию программного обеспечения агента (примерно 200 МБ), распакуйте его и перезапустите агент с новой версией. Вы можете отслеживать состояние агентов на вкладке "Агенты ".
Мы обновляем программное обеспечение агента с каждым обновлением в Azure DevOps Server.
Мы указываем версию агента в формате {major}.{minor}
.
Например, если версия агента равна 2.1
, то старшая версия — 2, а младшая — 1.
Если в Azure DevOps Server установлена более новая версия агента, и эта новая версия отличается только в минорной части, обычно её можно обновить автоматически. Обновление запрашивается, когда компонент платформы или одна из задач, используемых в конвейере, требует более новой версии агента. Начиная с Azure DevOps Server 2019, вам не нужно ждать выпуска нового сервера. Вы можете отправить новую версию агента на уровень приложений, и эта версия предлагается в качестве обновления.
При интерактивном запуске агента или при наличии более новой основной версии агента может потребоваться вручную обновить агенты. Агент можно легко обновить на вкладке пулов агентов в коллекции проектов . Конвейеры не могут выполняться без совместимого агента.
Вы можете просмотреть версию агента, перейдя к пулам агентов и выбрав вкладку "Возможности " для нужного агента, как описано в разделе "Настройка возможностей агента".
Чтобы активировать обновление агента программным способом, можно использовать API обновления агента, как описано в разделе "Как активировать обновления агента программным способом для конкретного пула агентов?".
Примечание.
Для серверов без доступа к Интернету вручную скопируйте ZIP-файл агента в следующую папку, чтобы использовать его в качестве локального файла. Создайте папку "Агенты", если она отсутствует.
- Windows:
%ProgramData%\Microsoft\Azure DevOps\Agents
- Linux:
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/work
в Linux. -
самостоятельно размещённом агенте:
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
Каталог | Описание | Примеры | Предопределенные переменные |
---|---|---|---|
Домашний каталог агента | Где установлен агент |
агент, размещенный корпорацией Майкрософт: Windows: C:\agents\3.248.0 Linux: /home/vsts/agents/3.248.0 macOS: /Users/runner/runners/3.248.0 Самостоятельно размещённый агент: Windows: C:\agent Linux: home/agent macOS: ~/agent |
Agent.HomeDirectory |
Рабочий каталог | Где агент хранит исходный код, двоичные файлы и артефакты |
агент, размещенный корпорацией Майкрософт: Операционная система Windows: C:\a Linux: /home/vsts/work macOS: /Users/runner/work Самостоятельно размещённый агент: Windows: C:\agent\_work Linux: /home/agent/_work macOS: ~/agent/work |
Agent.WorkFolder Agent.RootDirectory System.WorkFolder |
Создание каталога или рабочей области | Где выполняется задание проводки |
агент, размещенный корпорацией Майкрософт: Windows: C:\a\1 Linux: /home/vsts/work/1 macOS: /Users/runner/work/1 Самостоятельно размещённый агент: Windows: C:\agent\_work\1 Linux: /home/agent/_work/1 macOS: ~/agent/work/1 |
Agent.BuildDirectory Pipeline.Workspace |
s — исходный или рабочий каталог |
Содержит исходный код, который извлекается из репозитория.
Если в задании есть несколько checkout шагов, исходный код извлекается в каталоги, названные по именам репозиториев, как вложенная папка s . |
агент, размещенный корпорацией Майкрософт: Windows: C:\a\1\s Linux: /home/vsts/work/1/s macOS: /Users/runner/work/1/s Самостоятельно размещённый агент: Windows: C:\agent\_work\1\s Linux: /home/agent/_work/1/s macOS: ~/agent/work/1/s |
Build.SourcesDirectory Build.RepositoryLocalPath System.DefaultWorkingDirectory |
b — каталог двоичных файлов |
Содержит выходные данные сборки. |
агент, размещенный корпорацией Майкрософт: Windows: C:\a\1\b Linux: /home/vsts/work/1/b macOS: /Users/runner/work/1/b Самостоятельно размещённый агент: Windows: C:\agent\_work\1\b Linux: /home/agent/_work/1/b macOS: ~/agent/work/1/b |
Build.BinariesDirectory |
a — промежуточный каталог артефактов |
Содержит артефакты сборки. Очищается между запусками на локальных агентах. |
агент, размещенный корпорацией Майкрософт: Windows: C:\a\1\a Linux: /home/vsts/work/1/a macOS: /Users/runner/work/1/a Самостоятельно размещённый агент: Windows: C:\agent\_work\1\a Linux: /home/agent/_work/1/a macOS: ~/agent/work/1/a |
Build.StagingDirectory Build.ArtifactStagingDirectory System.ArtifactsDirectory |
Каталог TestResults | Содержит результаты теста. Очищается между запусками на локальных агентах. |
агент, размещенный корпорацией Майкрософт: Windows: C:\a\1\TestResults Linux: /home/vsts/work/1/TestResults macOS: /Users/runner/work/1/TestResults Самостоятельно размещённый агент: Windows: C:\agent\_work\1\TestResults Linux: /home/agent/_work/1/TestResults macOS: ~/agent/work/1/TestResults |
Common.TestResultsDirectory |
В размещенных корпорацией Майкрософт агентах для каждого запуска используется другой агент, поэтому рабочий каталог не сохраняется между выполнением. На самостоятельно размещенных агентах между запусками по умолчанию очищаются только каталоги для размещения артефактов и каталоги результатов тестирования. Дополнительные сведения об опции очистки рабочей области см. в Workspace.
Дополнительные сведения о предопределенных переменных см. в разделе .
Вопросы и ответы
Как убедиться, что у меня установлена последняя версия агента?
Перейдите на вкладку пулов агентов :
Войдите в свою организацию (
https://dev.azure.com/{yourorganization}
).Выберите Azure DevOps, параметры организации.
Выберите пулы агентов.
Войдите в коллекцию проектов (
http://your-server/DefaultCollection
).Выберите Azure DevOps, параметры коллекции.
Выберите пулы агентов.
Щелкните пул, содержащий этот агент.
Убедитесь, что агент включен.
Перейдите на вкладку возможностей:
На вкладке пулов агентов выберите нужный пул агентов .
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Примечание.
Размещенные корпорацией Майкрософт агенты не отображают системные возможности. Список программного обеспечения, установленного в агентах, размещенных корпорацией Майкрософт, см. в разделе "Использование размещенного майкрософт агента".
На вкладке пулов агентов выберите нужный пул.
Выберите агенты и выберите нужный агент.
Перейдите на вкладку " Возможности".
Ищите
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
. Создайте папку "Агенты", если она отсутствует.Все готово! Сервер Azure DevOps теперь будет использовать локальные файлы при обновлении агентов. Каждый агент автоматически обновляется при выполнении задачи, требующей более новой версии агента. Но если вы хотите вручную обновить некоторые агенты, щелкните пул правой кнопкой мыши и выберите "Обновить все агенты".
Есть ли у локальных агентов преимущества в плане производительности по сравнению с агентами, размещенными на серверах Майкрософт?
Во многих случаях да. В частности:
При использовании локального агента можно выполнять пошаговые сборки. Например, если вы определяете конвейер, который не очищает репозиторий и не выполняет чистую сборку, сборки обычно выполняются быстрее. Вы не получаете эти преимущества с агентом, размещенным корпорацией Майкрософт, если вы не используете такие функции, как кэширование, так как агент уничтожен после завершения конвейера.
Для запуска вашей сборки агенту, размещенному на сервере Майкрософт, может потребоваться больше времени. Хотя назначение задания агенту, размещенному корпорацией Майкрософт, часто занимает всего несколько секунд, иногда это может занять несколько минут в зависимости от нагрузки на нашу систему.
Можно ли установить несколько локальных агентов на одном компьютере?
Да. Этот подход может работать хорошо для агентов, выполняющих задания, которые не используют много общих ресурсов. Например, можно попробовать использовать его для агентов, запускающих выпуски, которые в основном оркестрируют развертывания и не выполняют большого объема работ непосредственно на агенте.
Вы можете обнаружить, что в других случаях вы не получаете много эффективности, выполняя несколько агентов на одном компьютере. Например, для агентов, выполняющих сборки, которые используют много дискового пространства и ресурсов ввода-вывода, это может не иметь смысла.
Вы также можете столкнуться с проблемами, если параллельные задания сборки используют одно и то же развертывание инструмента, например пакеты 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 см. в статье API и сопоставление версий Azure DevOps Server
Параметры URI
Имя. | В | Обязательное поле | Тип | Описание |
---|---|---|---|---|
agentId |
запрос | Неверно | строка | Агент для обновления. Если не указано , обновление активируется для всех агентов. |
organization |
путь | Истина | строка | Название организации Azure DevOps. |
poolId |
path | Истина | целое число (int32) | Используемый пул агентов |
api-version |
query | Ложь | строка | Используемая версия API. Значение должно быть установлено на '6.0', чтобы использовать эту версию API. |
Чтобы активировать обновление агента, текст запроса должен быть пустым.
Примечание.
Агент Azure Pipelines открытый код на GitHub.
Подробнее
Дополнительные сведения об агентах см. в следующих модулях из приложения сборки с помощью схемы обучения Azure DevOps .