Планирование конвейера выпуска с помощью Azure Pipelines

Завершено

В этом разделе описано, как Энди и Мара планируют базовый конвейер CD, работающий в Azure Pipelines.

Когда все будет готово, они проверят его остальной части команды. Конвейер будет служить POC, что они будут улучшаться и расширяться, как они узнают больше и получают отзывы от Тима и Амиты.

Каковы части базового конвейера CD?

Базовый конвейер CD содержит триггер для выполнения процесса и по крайней мере одного этапа или этапа развертывания. Этап состоит из заданий. Задание — это ряд шагов, определяющих способ сборки, тестирования или развертывания приложения.

Diagram that shows a hand-drawn illustration of an artifact moving to a deployment environment.

Энди. У нас уже есть артефакт сборки . Это ZIP-файл, который создает существующий конвейер сборки. Но как развернуть его в рабочей среде ?

Что такое этап конвейера?

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

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

Diagram that shows a hand-drawn illustration of a deployment pipeline that contains two stages, Build and Deploy.

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

Вопрос в том, где следует развернуть артефакт?

Что такое среда?

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

В следующем примере может быть ваша рабочая среда:

  • Физическая машина или виртуальная машина ( виртуальная машина).
  • Контейнерная среда, например Kubernetes.
  • Управляемая служба, например служба приложение Azure.
  • Бессерверная среда, например Функции Azure.

Артефакт развертывается в среде. Azure Pipelines упрощает развертывание практически в любой среде, будь то локальной или в облаке.

В Azure Pipelines среда терминов имеет второе значение. Здесь среда представляет собой абстрактное представление среды развертывания, например кластера Kubernetes, экземпляра Служба приложений или виртуальной машины.

Среда Azure Pipelines записывает журнал развертывания, помогающий определить источник изменений. С помощью сред Azure Pipelines можно также определить проверка безопасности и способы управления продвижением артефакта с одного этапа конвейера на другой. Какая среда включает в себя, зависит от того, что вы хотите сделать с артефактом. Среда, в которой требуется протестировать артефакт, вероятно, будет определена по-разному, чем в том месте, где требуется развернуть артефакт для конечных пользователей.

Одним из способов определения среды Azure Pipelines является файл YAML. В файле YAML есть раздел environment, в котором указывается среда Azure Pipelines для развертывания артефакта.

При планировании конвейера выпуска необходимо решить, где будет работать приложение или служба. Давайте послушаем и посмотрим, что Энди и Мара решают.

Энди: На высоком уровне, какой тип среды мы хотим? Нужно ли развертывать локальную среду или в облаке?

Мара: Мы могли бы попросить Тима создать виртуальную машину для нас в лаборатории, но он всегда работает из оборудования. Это будет быстро и легко настроить POC самостоятельно, если мы используем облако.

Энди: Я согласен, но есть так много облачных вариантов, и мы можем использовать Azure Pipelines для развертывания в любом из них. Что мы должны попробовать?

Мара: команды, которые разрабатывают наши игры, используют Azure для размещения некоторых из своих внутренних систем. Они быстро настраивают его и, кажется, нравится. Я думаю, что мы должны придерживаться Azure для нашего облака.

Энди: Хорошо, что имеет смысл! Но Azure предоставляет так много вариантов вычислений. Какой из них следует выбрать?

Энди перечисляет эти параметры на доске:

  • Виртуальные машины
  • Контейнеры
  • Служба приложений Azure
  • Бессерверные вычисления

Примечание.

Дополнительные сведения о каждом из этих параметров вычислений вы найдете в конце этого модуля.

Мара: Я знаю, что контейнеры и бессерверные вычисления популярны прямо сейчас. По сравнению с виртуальными машинами они облегчаются с точки зрения ресурсов. Они также легко заменить и масштабировать. Оба интересны, но я нервничаю за обучение двумя новыми технологиями одновременно. Я бы предпочел сосредоточиться только на строительстве конвейера.

Энди: Я с тобой. Это оставляет виртуальные машины или Служба приложений. Я думаю, что виртуальные машины будут лучшим выбором, если мы перемещаем бизнес-приложение , которое требует полного доступа к определенной среде в облако. Мы не делаем ничего, что важно.

Мара: Это оставляет Служба приложений, что будет моим выбором. Он предназначен для работы с Azure DevOps, и он поставляется с преимуществами. Это среда на основе модели "платформа как услуга" (PaaS) для веб-приложений, поэтому наша работа значительно упрощается. Нам не придется беспокоиться о инфраструктуре. Он также поставляется с функциями безопасности и позволяет выполнять балансировку нагрузки и автоматическое масштабирование.

Энди: Служба приложений звучит как то, что нам нужно. Давайте будем использовать Служба приложений. Мы создадим только доказательство концепции в любом случае. Мы всегда можем изменить параметр вычислений, если мы хотим попробовать что-то другое позже.

Как Azure Pipelines выполняет действия по развертыванию?

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

Энди: У нас есть артефакт сборки, и мы знаем, что мы будем создавать и развертывать на этапах конвейера. Мы также определили целевую среду для развертывания. Это Служба приложений. Теперь мой вопрос: как Azure Pipelines проходит проверку подлинности с помощью Служба приложений? Я знаю, что это будет одной из проблем Тима. Нам необходимо обеспечить безопасность процесса.

После немного исследований Энди и Мара придумали общие шаги, которые позволяют Azure Pipelines развертывать в Служба приложений:

  1. Укажите целевую среду развертывания в конфигурации конвейера.
  2. Предоставьте способ проверки подлинности доступа к этой среде в Azure Pipelines.
  3. Используйте задачи Azure Pipelines для развертывания артефакта сборки в этой среде.

Мара: Согласно нашим исследованиям, необходимо создать подключение к службе, чтобы указать целевую среду и пройти проверку подлинности доступа к ней. После определения подключения к службе он будет доступен для всех задач, которые будут использоваться. Затем необходимо использовать встроенные задачи DownloadPipelineArtifact, чтобы скачать артефакт сборки в агент конвейера и AzureWebApp для развертывания приложения в службе приложение Azure.

Что такое задания и стратегии?

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

Часть развертывания конвейера содержит те же элементы. Конфигурация развертывания обычно определяет одно или несколько заданий, среду конвейера и стратегии. Вы узнали о средах конвейера ранее.

Ниже приведен пример конфигурации, которую вы будете запускать позже в этом модуле. Эта конфигурация развертывает веб-сайт Space Game в службе приложение Azure.

- stage: 'DeployDev'
  displayName: 'Deploy to dev environment'
  dependsOn: Build
  jobs:
  - deployment: Deploy
    pool:
      vmImage: 'ubuntu-20.04'
    environment: dev
    variables:
    - group: 'Release Pipeline'
    strategy:
      runOnce:
        deploy:
          steps:
          - download: current
            artifact: drop
          - task: AzureWebApp@1
            displayName: 'Azure App Service Deploy: website'
            inputs:
              azureSubscription: 'Resource Manager - Tailspin - Space Game'
              appName: '$(WebAppName)'
              package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'

Задания

Задание — это ряд шагов ( или задач), которые выполняются последовательно как единица. Каждый этап конвейера имеет одно задание по умолчанию, даже если этот этап не использует job ключевое слово.

Задание может выполняться в пуле агентов, в контейнере или непосредственно на сервере Azure DevOps. Пример задания, показанного здесь, выполняется в агенте Ubuntu, размещенном корпорацией Майкрософт.

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

Можно также выполнять задания параллельно или последовательно. Используя существующий конвейер сборки в качестве примера, можно использовать параллельные задания для создания программного обеспечения в агентах Windows, Linux и macOS одновременно.

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

Стратегии

Стратегия определяет способ развертывания приложения. Дополнительные сведения о стратегиях, таких как синий зеленый и канарной в будущем модуле. Теперь вы будете использовать стратегию runOnce, чтобы скачать пакет Space Game из конвейера и развернуть его в службе приложение Azure.

Как Azure Pipelines подключается к Azure?

Чтобы развернуть приложение в ресурсе Azure, например виртуальной машине или Служба приложений, требуется подключение к службе. Оно обеспечивает безопасный доступ к подписке Azure одним из следующих способов:

  • Аутентификация субъекта-службы
  • Управляемые удостоверения для ресурсов Azure

Дополнительные сведения об этих моделях безопасности можно узнать в конце этого модуля, но кратко:

  • Субъект-служба — это удостоверение с ограниченной ролью, которая может получить доступ к ресурсам Azure. Подумайте о субъекте-службе как учетной записи службы, которая может выполнять автоматические задачи от вашего имени.
  • Управляемые удостоверения для ресурсов Azure — это функция идентификатора Microsoft Entra, упрощающего процесс работы с субъектами-службами. Так как управляемые удостоверения существуют в клиенте Microsoft Entra, инфраструктура Azure может автоматически проходить проверку подлинности службы и управлять учетной записью.

Управляемые удостоверения упрощают работу с субъектами-службами; но в этом модуле мы будем использовать проверку подлинности субъекта-службы, так как подключение службы может автоматически обнаруживать ресурсы Azure и назначать соответствующие роли субъекта-службы.

План

Энди и Мара готовы начать. Они собираются:

  • Создайте свою существующую конфигурацию сборки Azure Pipelines.
  • Определите этап сборки, создающий артефакт.
  • Определите этап развертывания, который развертывает артефакт в Служба приложений.

Diagram that shows a hand-drawn illustration of a deployment pipeline that contains two stages. The deployment stage deploys the artifact to App Service.

Энди: Правильно ли этот рисунок? Мы используем Azure Pipelines для развертывания в службе приложение Azure. Для этого мы рассмотрим артефакт сборки в качестве входных данных на этапе развертывания. Задачи на этапе развертывания скачивают артефакт и используют подключение службы для развертывания артефакта в Служба приложений .

Мара: Это о суммирует его. Итак, приступим.

Проверьте свои знания

1.

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

2.

Чтобы развернуть в службе приложение Azure, какие ресурсы требуются Azure Pipelines?

3.

Какие из следующих инструкций описывают связь между задачами, этапами и заданиями?