Учебник. Непрерывная интеграция шаблонов Resource Manager с Azure Pipelines

В предыдущем учебнике развертывался связанный шаблон. В этом учебнике описано, как использовать Azure Pipelines для непрерывного создания и развертывания проектов шаблонов Resource Manager.

Azure DevOps предоставляет службы разработчиков группам поддержки для планирования работы, коллективной работы над разработкой кода, а также для создания и развертывания приложений. Разработчики могут работать в облаке с помощью Azure DevOps Services. Azure DevOps предоставляет интегрированный набор функций, доступ к которым можно получить через веб-браузер или клиент IDE. Azure Pipelines — это одна из этих функций. Azure Pipelines — это полнофункциональная служба непрерывной интеграции (CI) и непрерывной доставки (CD). Она работает с вашим основным провайдером Git и может развертываться в большинстве крупных облачных служб. Затем вы можете автоматизировать сборку, тестирование и развертывание своего кода в Microsoft Azure, Google Cloud Platform или Amazon Web Services.

Примечание.

Выберите имя проекта. При выполнении руководства замените любой из ARMPipelineProj именем проекта. Это имя проекта используется для создания имен ресурсов. Одним из ресурсов является учетная запись хранения. Имя учетной записи хранения должно содержать от 3 до 24 символов и состоять только из цифр и букв нижнего регистра. Имя должно быть уникальным. В шаблоне имя учетной записи хранения — это имя проекта с добавлением store, которое должно содержать от 3 до 11 символов. Поэтому имя проекта должно соответствовать требованиям к имени учетной записи хранения и быть длиной менее 11 символов.

В рамках этого руководства рассматриваются следующие задачи:

  • Подготовка репозитория GitHub
  • Создание проекта Azure DevOps
  • Создание конвейера Azure
  • Проверка развертывания конвейера
  • Обновление шаблона и повторное развертывание
  • Очистка ресурсов

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Необходимые компоненты

Для работы с этой статьей необходимо иметь следующее.

Подготовка репозитория GitHub

GitHub используется для хранения исходного кода вашего проекта, включая шаблоны диспетчера ресурсов. Другие поддерживаемые репозитории доступны в репозиториях, поддерживаемых Azure DevOps.

Создание репозитория GitHub

Если у вас нет учетной записи GitHub, см. раздел Предварительные требования.

  1. Войдите в GitHub.

  2. Выберите в правом верхнем углу изображение своей учетной записи, а затем выберите Ваши репозитории.

    Screenshot of creating a GitHub repository for Azure Resource Manager Azure DevOps Azure Pipelines.

  3. Нажмите зеленую кнопку Новый.

  4. В поле Имя репозитория введите имя репозитория. Например, ARMPipeline-repo. Не забудьте заменить любой из ARMPipeline именем проекта. Вы можете выбрать общедоступный или частный для просмотра этого руководства. Затем выберите Создать репозиторий.

  5. Введите URL-адрес. URL-адрес репозитория имеет следующий формат: https://github.com/[YourAccountName]/[YourRepositoryName].

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

Клонирование репозитория

  1. Откройте Git Shell или Git Bash. См. раздел Предварительные требования.

  2. Убедитесь, что вашей текущей папкой является GitHub.

  3. Выполните следующую команду:

    git clone https://github.com/[YourAccountName]/[YourGitHubRepositoryName]
    cd [YourGitHubRepositoryName]
    mkdir create_web_app
    cd create_web_app
    pwd
    

    Замените [YourAccountName] именем учетной записи GitHub, а [YourGitHubRepositoryName]— именем репозитория, созданного в предыдущей процедуре.

Папка create_web_app — это папка, в которой хранится шаблон. С помощью команды pwd отображается путь к папке. Путь — это расположение, в котором будет сохраняться шаблон при выполнении следующей процедуры.

Загрузите шаблон быстрого запуска

Вместо создания шаблонов можно скачать шаблоны и сохранить их в папке create_web_app .

Имя папки и имя файла используются так, как они указаны в конвейере. После изменения этих имен необходимо обновить имена, используемые в конвейере.

Отправьте шаблон в удаленный репозиторий

Файл azuredeploy.json добавлен в локальный репозиторий. Затем загрузите шаблон в удаленный репозиторий.

  1. Откройте Git Shell или Git Bash, если он не открыт.

  2. Измените каталог на папку create_web_app в локальном репозитории.

  3. Убедитесь, что файл azuredeploy.json находится в папке.

  4. Выполните следующую команду:

    git add .
    git commit -m "Add web app templates."
    git push origin main
    

    Может появиться предупреждение о LF. На него можно не обращать внимания. Main — это главная ветвь. Обычно вы создаете ветвь для каждого обновления. Чтобы упростить работу с руководством, используйте главную ветвь напрямую.

  5. Перейдите из браузера в свой репозиторий GitHub. Введите URL-адрес https://github.com/[YourAccountName]/[YourGitHubRepository]. Вы увидите папку create_web_app и два файла в папке.

  6. Щелкните файл azuredeploy.json, чтобы открыть шаблон.

  7. Нажмите кнопку Raw. URL-адрес начинается с https://raw.githubusercontent.com.

  8. Скопируйте URL-адрес. Это значение необходимо указать при настройке конвейера далее в этом учебнике.

Вы создали репозиторий GitHub и загрузили в него шаблоны.

Создание проекта DevOps

Организация DevOps необходима, прежде чем вы сможете перейти к выполнению следующей процедуры. Если у вас ее нет, см. раздел Предварительные требования.

  1. Выполните вход в Azure DevOps.

  2. Выберите организацию DevOps слева и выберите новый проект. Если у вас нет проектов, страница создания проекта откроется автоматически.

  3. Введите следующие значения:

    Screenshot of creating an Azure DevOps project for Azure Resource Manager Azure DevOps Azure Pipelines.

    • Имя проекта: введите имя проекта. Вы можете использовать имя проекта, которое вы выбрали в самом начале руководства.
    • Видимость: выбор приватного.

    Для других свойств используйте значения по умолчанию.

  4. Нажмите кнопку создания.

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

  1. Выберите Параметры проекта в нижней части левого меню.

  2. Выберите Подключения к службе в Pipelines.

  3. Щелкните Создать подключение к службе, затем — Azure Resource Manager и нажмите кнопку Далее.

  4. Выберите субъект-службу (автоматически) и нажмите кнопку "Далее".

  5. Введите следующие значения:

    • Уровень области: выбор Подписки.
    • Подписка: выберите свою подписку.
    • Группа ресурсов:оставьте ее пустой.
    • Имя подключения: ввод имени подключения. Например, ARMPipeline-conn. Запишите это имя, оно вам понадобится при создании конвейера.
    • Предоставить разрешение на доступ для всех конвейеров (выбрано)
  6. Выберите Сохранить.

Создание конвейера

До этого момента мы выполнили следующие задачи. Если вы пропустили предыдущие разделы, потому что уже работали с GitHub и DevOps, перед продолжением необходимо выполнить следующие задачи.

  • Создайте репозиторий GitHub и сохраните шаблоны в папку create_web_app в репозитории.
  • Создайте проект DevOps и создайте подключение службы Azure Resource Manager.

Чтобы создать конвейер с шагом для развертывания шаблона:

  1. Выберите Pipelines в меню слева.

  2. Выберите Создать конвейер.

  3. На вкладке Подключиться выберите GitHub. Если потребуется, введите учетные данные GitHub, а затем следуйте инструкциям. Если вы видите следующий экран, выберите Выбрать только репозитории и убедитесь, что ваш репозиторий находится в списке, прежде чем выбрать Утвердить и установить.

    Screenshot of selecting repositories for Azure Resource Manager Azure DevOps Azure Pipelines.

  4. На вкладке Выбрать выберите свой репозиторий. Имя по умолчанию имеет значение [YourAccountName]/[YourGitHubRepositoryName].

  5. На вкладке Настроить выберите Простейший конвейер. Он отобразит файл конвейера azure-pipelines.ymlв два этапа с помощью сценария.

  6. Удалите два шага скрипта из YML-файла.

  7. Переместите курсор в строку после steps:.

  8. Щелкните Показать помощника в правой части экрана, чтобы открыть область Задачи.

  9. Выберите ARM template deployment (Развертывание шаблона Resource Manager).

  10. Введите следующие значения:

    • deploymentScope: щелкните Группа ресурсов. Дополнительные сведения об областях см. в разделе Области развертывания.
    • Подключение Azure Resource Manager: выберите имя подключения к службе, которое вы создали ранее.
    • Подписка: укажите идентификатор целевой подписки.
    • Действие: действие Создание и изменение группы ресурсов выполняет по сути 2 действия: 1. создает группу ресурсов, если указано новое имя группы ресурсов; 2. развертывает указанный шаблон;
    • Группа ресурсов: введите имя новой группы ресурсов. Например, ARMPipeline-rg.
    • Расположение: выберите расположение для группы ресурсов, например Центральная часть США.
    • Расположение шаблона: выберите URL-адрес файла, чтобы в рамках задачи выполнялся поиск файла шаблона по URL-адресу. Так как relativePath применяется в основном шаблоне и relativePath поддерживают только развертывания на основе URI, здесь нужно использовать URL-адрес.
    • Ссылка на шаблон: введите URL-адрес, полученный при работе с последней частью раздела Подготовка репозитория GitHub. Он начинается с https://raw.githubusercontent.com.
    • Ссылка на параметры шаблона: оставьте это поле пустым. Вы укажете значения параметров в поле Переопределить параметры шаблона.
    • Переопределить параметры шаблона: введите -projectName [EnterAProjectName].
    • Режим развертывания: выберите Инкрементное.
    • Имя развертывания: введите DeployPipelineTemplate. Чтобы можно было увидеть Имя развертывания, нажмите кнопкуAdvanced (Дополнительно).

    Screenshot of the ARM template deployment page with required values entered for Azure DevOps Azure Pipelines.

  11. Выберите Добавить.

    Дополнительные сведения о задаче см. в статьях Azure Resource Group Deployment task (Задача развертывания группы ресурсов Azure) и Azure Resource Manager template deployment task (Задача развертывания шаблона Azure Resource Manager).

    YML-файл должен иметь следующий вид:

    Screenshot of the Review page with the new pipeline titled Review your pipeline YAML for Azure DevOps Azure Pipelines.

  12. Выберите Сохранить и выполнить.

  13. В области Save and run (Сохранить и запустить) щелкните Save and run (Сохранить и запустить) еще раз. Копия файла YAML сохраняется в подключенном хранилище. Вы можете увидеть файл YAML, перейдя в свой репозиторий.

  14. Убедитесь, что конвейер успешно выполнен.

    Screenshot of Azure Resource Manager Azure DevOps Azure Pipelines YAML file.

Проверка развертывания

  1. Войдите на портал Azure.
  2. Откройте группу ресурсов. Имя — это то, что вы указали в файле YAML конвейера. Вы ознакомитесь с одной созданной учетной записью хранения. Имя учетной записи хранения начинается с store.
  3. Выберите имя учетной записи хранения, чтобы открыть ее.
  4. Выберите Свойства. В поле Репликация должно быть указано Локально избыточное хранилище (LRS).

Обновление и повторное развертывание

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

  1. Откройте linkedStorageAccount.json из локального репозитория в Visual Studio Code или любом текстовом редакторе.

  2. Обновите defaultValue из storageAccountType до Standard_GRS. Экран должен выглядеть так:

    Screenshot of updating the YAML file for Azure Resource Manager Azure DevOps Azure Pipelines.

  3. Сохраните изменения.

  4. Отправьте изменения в удаленный репозиторий, выполнив следующие команды из Git Bash/Shell.

    git pull origin main
    git add .
    git commit -m "Update the storage account type."
    git push origin main
    

    Первая команда (pull) синхронизирует локальный репозиторий с удаленным репозиторием. YAML-файл конвейера добавлен только в удаленный репозиторий. При выполнении команды pull в локальную ветвь загружается копия YAML-файла.

    Четвертая команда (push) передает измененный файл linkedStorageAccount.json в удаленный репозиторий. После обновления главной ветви удаленного репозитория конвейер снова запустится.

Чтобы проверить изменения, можно проверить свойство "Репликация" учетной записи хранения. См. раздел Проверка развертывания.

Очистка ресурсов

Если ресурсы Azure больше не нужны, их можно удалить. Для этого необходимо удалить группу ресурсов.

  1. На портале Azure в меню слева выберите Группа ресурсов.
  2. В поле Фильтровать по имени введите имя группы ресурсов.
  3. Выберите имя группы ресурсов.
  4. В главном меню выберите Удалить группу ресурсов.

Кроме того, также можно удалить репозиторий GitHub и проект DevOps Azure.

Следующие шаги

Поздравляем, вы завершили работу с учебником по развертыванию шаблона Resource Manager. Оставьте комментарии и предложения для нас в разделе отзывов. Спасибо! Вы можете перейти к более сложным понятиям шаблонов. В следующем учебнике подробно рассматривается использование справочной документации по шаблонам для определения развертываемых ресурсов.