Общие сведения о Azure Pipelines
С помощью конвейера можно автоматизировать этапы процесса развертывания. При каждом внесении изменений в код и фиксации изменений в репозитории Git конвейер выполняет заданный процесс. Конвейер может проверить, соответствует ли ваш код Bicep стандартам качества, а затем автоматизирует этапы развертывания ресурсов в Azure. Процесс задается в созданном определении конвейера.
Azure Pipelines является компонентом службы Azure DevOps. Azure DevOps также включает службу Azure Repos, в которой размещены репозитории Git, используемые для хранения и совместного использования кода специалистами отдела. После того как код Bicep будет сохранен в Git, Azure Pipelines сможет получить доступ к коду для автоматизации процессов развертывания. В этом уроке вы узнаете об Azure Pipelines.
Что такое конвейер?
Конвейер — это повторяемая процедура, которая используется для тестирования и развертывания кода, определенного в файле конфигурации. Конвейер включает все шаги, которые необходимо выполнить, а также порядок их выполнения.
При работе с Azure Pipelines вы описываете конвейер с помощью файла YAML. Файл YAML — это структурированный текстовый файл, который похож на Bicep, если его тоже рассматривать как структурированный текстовый файл. Вы можете создавать и изменять файлы YAML в любом текстовом редакторе. В этом модуле вы будете использовать Visual Studio Code. Visual Studio Code предлагает расширение, позволяющее упростить редактирование YAML-файлов конвейера Azure DevOps. Веб-интерфейс Azure DevOps также содержит некоторые средства для просмотра и редактирования файлов YAML конвейера.
Примечание.
Azure Pipelines также включает классические конвейеры, которые являются более ранними версиями функции конвейеров. Конвейеры на основе YAML заменили собой классические конвейеры. В этом модуле обсуждаются только конвейеры YAML. Мы рекомендуем использовать конвейеры YAML.
Поскольку YAML-файл конвейера является файлом кода, он хранится вместе с кодом Bicep в репозитории Git. Для совместной работы над определением конвейера применяются функции Git. Вы можете управлять разными версиями файла конвейера с помощью фиксаций и создания ветвей. В одном из следующих модулей вы также узнаете о других дополнительных возможностях конвейеров, таких как шаблоны, которые упрощают повторное использование определений конвейера.
Агенты и пулы
С текущему моменту у вас есть файлы Bicep, развернутые с локального компьютера. После создания шаблона Bicep его можно развернуть в Azure с помощью Azure CLI или Azure PowerShell. Эти инструменты используют ресурсы компьютера для отправки шаблона в Azure. Они также применяют ваше личное удостоверение для проверки подлинности в Azure и проверки наличия разрешений на развертывание ресурсов.
Конвейеру также требуется доступ к компьютеру для выполнения этапов развертывания. Azure Pipelines использует компьютер, называемый агентом. Агент — это компьютер, настроенный на выполнение этапов развертывания конвейера. У каждого агента уже есть инструменты Bicep и Azure, которые использовались в предыдущих модулях, поэтому они могут выполнять те же действия, которые вы выполняли на своем компьютере. Вместо выполнения команд человеком служба Azure Pipelines предписывает агенту выполнить действия, определенные в YAML-файле.
Azure Pipelines поддерживает несколько типов агентов с разными операционными системами, такими как Ubuntu или Windows, и различные наборы средств. Эти агенты выполняются на платформе Майкрософт, поэтому вам не нужно поддерживать для них инфраструктуру вычислений. Иногда их называют агентами, размещенными корпорацией Майкрософт, или размещенными агентами, так как они размещаются от вашего имени. При запуске конвейера размещенное агент создается автоматически. После завершения работы конвейера размещенный агент автоматически удаляется. Вы не можете получить доступ к размещенным агентам напрямую, поэтому важно, чтобы конвейер содержал все этапы, необходимые для развертывания решения.
Пул агентов содержит несколько агентов одного типа. При настройке конвейера вы указываете Azure Pipelines, какой пул агентов следует использовать для реализации каждого из этапов. В процессе работы конвейер ожидает, пока агент из пула станет доступным, а затем предписывает агенту выполнить этапы развертывания. Для выполнения конвейера может быть назначен любой агент в пуле.
Примечание.
Вы можете создать пользовательский агент, которое называется локальным. Это можно сделать, если у вас есть определенное программное обеспечение, которое нужно запускать как часть конвейера, или если вам необходимо детально контролировать настройку агента. В этом модуле мы не будем обсуждать локальные агенты, но мы предоставляем ссылку на дополнительные сведения в кратком виде.
Триггеры
Вы должны указать в Azure Pipelines время выполнения конвейера с помощью триггера. Можно выбрать из нескольких типов триггеров. В данный случае вы будете использовать ручной триггер. Вы вручную укажите Azure Pipelines, когда нужно запускать конвейер. В этом модуле вы также узнаете о других типах триггеров.
Шаги
Шаг обозначает отдельную операцию, которую будет выполнять конвейер. Шаг похож на отдельную команду, выполняемую в Bash или PowerShell. В большинстве случаев развертывание представляет собой выполнение последовательности шагов. Вы определяете последовательность и все сведения о каждом шаге в файле YAML конвейера.
Azure Pipelines предлагает два типа шагов:
- Скрипты. Шаг скрипта используется для выполнения одной команды или последовательности команд в Bash, PowerShell или командной оболочке Windows.
- Задачи. Задача — удобный способ реализации множества различных возможностей без написания инструкций для скриптов. Например, существуют встроенные задачи для выполнения командлетов Azure CLI и Azure PowerShell, для тестирования кода или передачи файлов на FTP-сервер и. Любой пользователь может написать задачу и поделиться ей с другими пользователями, опубликовав ее в Visual Studio Marketplace. Также доступен большой набор коммерческих задач и задач с открытым исходным кодом.
Некоторые люди предпочитают использовать вместо встроенных задач инструкции для скриптов, так как они предоставляют больший контроль над выполняемыми операциями. Другие же применяют задачи, чтобы не писать скрипты и не управлять ими. В этом модуле мы используем оба подхода.
Работы
Задание в Azure Pipelines представляет собой упорядоченный набор шагов. В конвейере всегда есть по крайней мере одно задание, а сложное развертывание обычно состоит из нескольких заданий.
Примечание.
Вы можете настроить запуск каждого задания в отдельном пуле агентов. Это полезно при создании и развертывании решений, которые должны использовать разные операционные системы в разных частях конвейера задания.
Например, предположим, что вы создаете приложение для iOS и его серверную службу. У вас может быть одно задание, которое выполняется в пуле агентов macOS для создания приложения iOS, и второе задание, которое выполняется в пуле агентов Ubuntu или Windows для создания серверной части. Вы даже можете указать конвейеру запускать два задания одновременно, что ускоряет его выполнение.
В этом модуле мы объявляем пул агентов в корне файлов определения конвейера, поэтому все задания в конвейерах используют один и тот же пул.
Примечание.
Вы также можете использовать этапы Azure Pipelines, которые позволяют разделить конвейер на логические стадии и добавить ручные проверки в процесс выполнения конвейера. Дополнительные сведения о этапах в будущих модулях.
Пример базового конвейера
Теперь, когда вы знакомы с основными концепциями Azure Pipelines, давайте взглянем на простое определение конвейера в YAML:
trigger: none
pool:
vmImage: ubuntu-latest
jobs:
- job:
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo We'll add more steps soon.
echo For example, we'll add our Bicep deployment step.
displayName: 'Run a multi-line script'
Рассмотрим каждую часть этого файла более подробно.
-
trigger
сообщает конвейеру о необходимости выполнения в определенное время. В этом случаеtrigger: none
сообщает Azure Pipelines, что вы хотите активировать конвейер вручную. -
pool
указывает конвейеру, какой пул агентов необходимо использовать при выполнении шагов конвейера. В этом примере конвейер будет выполняться на агенте под управлением операционной системы Ubuntu, который поступает из пула агентов, размещенных корпорацией Майкрософт. -
jobs
объединяет все задания в конвейере. -
job
сообщает конвейеру, что у вас есть одно задание.Совет
Если в конвейере только одно задание, ключевые слова
jobs
иjob
можно опустить. Мы включили сюдаjob
, чтобы вы поняли, как разные концепции в конвейере работают вместе. -
steps
содержит последовательность действий, выполняемых в рамках задания. Этот пример YAML включает два шага. Оба они запускают простой скрипт для вывода небольших строк текста. Каждый шаг имеет значениеdisplayName
, которое является понятным для пользователя именем этого шага. Отображаемое имя используется в журналах конвейера. Чтобы создать шаг со скриптом из нескольких строк, используйте вертикальную черту (|
), как показано в примере. После выполнения шага в журнале конвейера появятся выходные данные.
Внимание
В файлах YAML важно учитывать отступы. Взгляните на этот пример YAML. Некоторые строки в YAML имеют отступ в два или четыре пробела. Количество пробелов важно. Если вы неправильно расставите отступы в файле, Azure Pipelines не сможет его интерпретировать. Visual Studio Code поможет найти и исправить ошибки в отступах в файле YAML.