Поделиться через


Использование DevTest Labs в конвейерах сборки и выпуска в Azure Pipelines

В этой статье содержатся сведения о том, как применять DevTest Labs в конвейерах сборки и выпуска Azure Pipelines.

Обобщенный поток

Основной поток включает конвейер сборки, который выполняет следующие задачи:

  1. Компиляция кода приложения.
  2. Создание базовой среды в DevTest Labs.
  3. Добавление в среду пользовательских сведений.
  4. Развертывание приложения в среде DevTest Labs.
  5. Тестирование кода.

После успешного завершения сборки конвейер выпуска на основе артефактов сборки развернет приложение в промежуточной или рабочей среде.

Одно из необходимых условий заключается в том, что вся информация для создания тестируемой экосистемы должна быть полностью доступна в артефактах сборки, в том числе данные для настройки ресурсов Azure. Поскольку за использование ресурсов Azure взимается плата, компании обычно хотят контролировать и отслеживать потребление этих ресурсов. В некоторых ситуациях шаблоны Azure Resource Manager, используемые для создания и настройки ресурсов, находятся в ведении другого подразделения, например ИТ-отдела. Также шаблоны могут храниться в другом репозитории. Это приводит к интересной ситуации при создании и тестировании сборки. Как код, так и конфигурация должны храниться в артефактах сборки для воссоздания системы в рабочей среде.

Применив DevTest Labs на этапе сборки и тестирования, вы сможете добавить шаблоны Azure Resource Manager и вспомогательные файлы в исходные данные для сборки. На этапе выпуска в рабочей среде будет развернута точно такая конфигурация, которую вы тестировали. Задача создания среды Azure DevTest Labs с правильной конфигурацией сохраняет шаблоны Resource Manager в артефактах сборки. В этом примере вы развернете и протестируете веб-приложение в Azure на основе примера кода из статьи Руководство. Создание веб-приложения .NET Core с базой данных SQL в Службе приложений Azure.

Схема, показывающая общий поток.

Настройка ресурсов Azure

Необходимо заранее создать несколько элементов:

  • Два репозитория. Первый из них содержит код из упомянутого выше руководства и шаблон Resource Manager с двумя дополнительными виртуальными машинами. Второй содержит базовый шаблон Azure Resource Manager (существующая конфигурация).
  • Группа ресурсов для развертывания рабочего кода и конфигурации.
  • Тестовая служба с подключением к репозиторию конфигурации для конвейера сборки. Шаблон Resource Manager нужно передать в репозиторий конфигурации с именем azuredeploy.json и дополнительным файлом метаданных metadata.json, чтобы служба DevTest Labs правильно распознала и развернула этот шаблон.

Конвейер сборки создаст среду DevTest Labs и развернет код для тестирования.

Настройка конвейера сборки

Создайте в Azure Pipelines конвейер сборки, используя код из статьи Руководство. Создание веб-приложения .NET Core с базой данных SQL в Службе приложений Azure. Примените шаблон для ASP.NET Core, который заполнит необходимую задачу для сборки, тестирования и публикации кода.

Снимок экрана: выбор шаблона ASP.NET.

Добавьте три дополнительные задачи, которые создадут среду в DevTest Labs и выполнят развертывание в ней.

Снимок экрана: конвейер с тремя задачами.

Задача создания среды

В задаче создания среды (Azure DevTest Labs Create Environment) с помощью раскрывающихся списков выберите следующие значения:

  • Подписка Azure
  • Имя лаборатории
  • Имя репозитория
  • Имя шаблона (в котором указана папка, в которой хранится среда)

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

Имя среды будет отображаться в DevTest Labs. Его нужно сделать уникальным для каждой сборки. Например: TestEnv$(Build.BuildId) .

Для передачи сведений в шаблон Resource Manager можно указать файл параметров или параметры.

Установите флажок Create output variables based on the environment template output (Создать выходные переменные на основе выходных данных шаблона среды) и введите ссылочное имя. В нашем примере это имя BaseEnv. Имя BaseEnv потребуется вам при настройке следующей задачи.

Снимок экрана: задача

Задача заполнения среды

Вторая задача (Azure DevTest Labs Populate Environment) позволяет обновить сведения в существующей среде DevTest Labs. Задача создания среды возвращает значение BaseEnv.environmentResourceId, которое используется для настройки имени среды в этой задаче. Шаблон Resource Manager для этого примера поддерживает два параметра — adminUserName и adminPassword.

Снимок экрана: задача

Задача развертывания Службы приложений

Третья задача (Azure App Service Deploy) выполняет развертывание Службы приложений Azure. Для нее задается тип приложения Web App (Веб-приложение) и имя Службы приложений $(WebSite) .

Снимок экрана: задача развертывания Служба приложений.

Настройка конвейера выпуска

Вы создадите конвейер выпуска с двумя задачами: Azure Deployment: Create Or Update Resource Group (Развертывание Azure: создание или обновление группы ресурсов) и Deploy Azure App Service (Развертывание Службы приложений Azure).

Для первой задачи укажите имя и расположение группы ресурсов. Расположение шаблона представляет собой связанный артефакт. Если шаблон Resource Manager содержит связанные шаблоны, необходимо реализовать пользовательское развертывание группы ресурсов. Этот шаблон размещен в опубликованном артефакте drop. Переопределите параметры шаблона для шаблона Resource Manager. Для остальных параметров можно сохранить значения по умолчанию.

Для второй задачи Deploy Azure App Service (Развертывание Службы приложений Azure) укажите подписку Azure, выберите Web App (Веб приложение) в поле App type (Тип приложения) и значение $(WebSite) в поле App Service name (Имя Службы приложений). Для остальных параметров можно сохранить значения по умолчанию.

Тестовый запуск

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

Дальнейшие действия

См. следующие статьи: