Реализация CI/CD для приложений MicroProfile с помощью Azure Pipelines

В этом руководстве показано, как без усилий настроить цикл выпуска непрерывной интеграции и непрерывного развертывания (CI/CD) Azure Pipelines, чтобы развернуть приложение Java EE MicroProfile в Веб-приложение для контейнеров Azure. Приложение MicroProfile использует базовый образ Payara Micro для создания WAR-файла.

FROM payara/micro:5.182
COPY target/*.war $DEPLOY_DIR/ROOT.war
EXPOSE 8080

Мы начнем процесс контейнеризации в Azure Pipelines с создания образа Docker, а затем отправим образ контейнера в Реестр контейнеров Azure (ACR). В конце мы создадим конвейер выпуска Azure Pipelines и развернем образ контейнера в веб-приложение.

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

  1. На портале Azure создайте реестр контейнеров Azure.

  2. На портале Azure создайте веб-приложение для контейнеров Azure. Для параметра ОС выберите Linux, а для параметра Настройка контейнера выберите Быстрый запуск в качестве источника образа.

  3. Скопируйте и сохраните URL-адрес клона из этого примера репозитория на GitHub: https://github.com/Azure-Samples/microprofile-hello-azure.

  4. Зарегистрируйтесь или войдите в Azure DevOps организации и создайте проект.

  5. Импортируйте пример репозитория GitHub в Azure Repos:

    1. На странице проекта Azure DevOps в области навигации слева выберите Репозитории.
    2. В разделе или импортировать репозиторий щелкните Импорт.
    3. В разделе URL-адрес клона введите сохраненный URL-адрес клона Git и щелкните Импорт.

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

Конвейер сборки непрерывной интеграции в Azure Pipelines автоматически выполняет все задачи сборки при каждой фиксации в исходном приложении Java EE. В этом примере для сборки проекта Java MicroProfile в Azure Pipelines используется Maven.

  1. На странице проекта Azure DevOps в области навигации слева выберите Конвейеры>Сборки.

  2. Выберите Новый конвейер.

  3. Выберите Use the classic editor (Использовать классический редактор), чтобы создать конвейер без YAML.

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

  5. Выберите Maven в списке шаблонов и щелкните Применить.

  6. Убедитесь, что в области справа в раскрывающемся списке Пул агентов отображается Размещение в Ubuntu 1604.

    Примечание.

    Так вы определите, какой сервер сборки будет использоваться в Azure Pipelines. Вы также можете использовать закрытый пользовательский сервер сборки.

  7. Чтобы настроить конвейер для непрерывной интеграции, перейдите на вкладку Триггеры в области слева и установите флажок Включить непрерывную интеграцию.

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

    Enable continuous integration

Создание образа сборки Docker

Для создания образа Docker в Azure Pipelines используется файл Docker с базовым образом из Payara Micro.

  1. Перейдите на вкладку Задачи и щелкните знак плюса + рядом с пунктом Задание агента 1, чтобы добавить задачу.

    Add a new task

  2. В области справа выберите Docker в списке шаблонов и щелкните Добавить.

  3. В области слева выберите buildAndPush, а в области справа введите описание в поле Отображаемое имя.

  4. В разделе Репозиторий контейнеров выберите Создать рядом с полем Реестр контейнеров.

  5. Укажите в диалоговом окне Добавить подключение службы для реестра Docker следующие сведения:

    Поле значение
    Тип реестра Выберите Реестр контейнеров Azure.
    Имя подключения Введите имя для подключения.
    Подписка Azure Выберите подписку Azure в раскрывающемся списке и при необходимости щелкните Авторизовать.
    Реестр контейнеров Azure Выберите нужное имя Реестра контейнеров Azure в раскрывающемся списке.
  6. Нажмите ОК.

    Add a Docker Registry service connection

    Примечание.

    Если вы используете Docker Hub или другой реестр, выберите Docker Hub или Другое вместо Реестр контейнеров Azure рядом с пунктом Тип реестра. Затем укажите учетные данные и сведения о подключении для этого реестра.

  7. В разделе Команды выберите выполнить сборку в раскрывающемся списке Команды.

  8. Нажмите кнопку с многоточием ... рядом с полем Dockerfile, найдите и выберите Dockerfile в репозитории GitHub, а затем щелкните ОК.

    Select the Dockerfile

  9. В разделе Теги введите последнее в новой строке.

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

Отправка образа Docker в ACR

Azure Pipelines отправляет образ Docker в Реестр контейнеров Azure и использует его для запуска приложения API MicroProfile в контейнерном веб-приложении Java.

  1. Так как вы используете Docker в Azure Pipelines, создайте другой шаблон Docker (см. раздел Создание образа сборки Docker выше). В раскрывающемся меню Команда выберите отправить.

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

  3. Убедитесь, что во всплывающем окне Запуск конвейера выбрано Размещение в Ubuntu 1604 в разделе Пул агентов, а затем щелкните Сохранить и запустить.

  4. После завершения сборки можно щелкнуть гиперссылку на страницеСборка, чтобы проверить результат сборки и просмотреть нужные сведения.

    Select the build hyperlink

Создание конвейера выпуска

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

  1. На странице проекта Azure DevOps в области навигации слева выберите Конвейеры>Выпуски.

  2. Выберите Новый конвейер.

  3. В списке шаблонов выберите Развертывание приложения Java в Службе приложений Azure и щелкните Применить.

    Select the Deploy a Java app to Azure App Service template

  4. Во всплывающем окне замените Этап 1 именем этапа, например: Разработка, Тестирование, Подготовка или Производство, а затем закройте окно.

  5. В разделе Артефакты в области слева выберите Добавить, чтобы связать артефакты из конвейера сборки с конвейером выпуска.

  6. В области справа выберите конвейер сборки в раскрывающемся списке в разделе Источник (конвейер сборки) и щелкните Добавить.

    Add a build artifact

  7. Щелкните гиперссылку в этапе Производство и выберите Просмотреть задачи этапа.

    Select the stage name

  8. В области справа заполните форму следующим образом:

    Поле значение
    Подписка Azure Выберите подписку Azure в раскрывающемся списке.
    Тип приложения Выберите Веб-приложение для контейнеров (Linux) в раскрывающемся списке.
    Имя службы приложений Выберите экземпляр ACR в раскрывающемся списке.
    Реестр или пространство имен Введите имя ACR в поле. Например, введите mymicroprofileregistry.azure.io.
    Репозиторий Укажите репозиторий, содержащий образ Docker.

    Configure stage tasks

  9. В области слева выберите Развернуть WAR-файл в Службе приложений Azure, а в области справа введите тег последнее в поле Тег.

  10. В области слева выберите Запустить в агенте, а в области справа выберите Размещение в Ubuntu 1604 в раскрывающемся списке Пул агентов.

Настройка переменных среды

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

  1. Перейдите на вкладку Переменные и щелкните Добавить, чтобы добавить следующие переменные для URL-адреса реестра контейнеров, имени пользователя и пароля.

    Имя. Значение
    registry.url Введите URL-адрес реестра контейнеров. Например: https://mymicroprofileregistry.azure.io
    registry.username Введите имя пользователя для реестра.
    registry.password Введите пароль для реестра. В целях безопасности щелкните значок замка, чтобы скрыть значение пароля.

    Add variables

  2. На вкладке Задачи выберите Развернуть WAR-файл в Службе приложений Azure в области слева.

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

  4. Во всплывающем окне Параметры приложения выберите Добавить, чтобы определить и назначить переменные параметров приложения:

    Имя. Значение
    DOCKER_REGISTRY_SERVER_URL $(registry.url)
    DOCKER_REGISTRY_SERVER_USERNAME $(registry.username)
    DOCKER_REGISTRY_SERVER_PASSWORD $(registry.password)
  5. Нажмите ОК.

    Add and set variables

Настройка непрерывного развертывания

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

  1. На вкладке Конвейер в разделе Артефакты щелкните значок с молнией в артефакте сборки.

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

  3. Щелкните Сохранить вверху справа, а затем еще раз щелкните Сохранить.

    Enable continuous deployment trigger

Развертывание приложения Java

Теперь, когда вы включили CI/CD, измененный исходный код создаст и запустит сборки и выпуски автоматически. Вы также можете создавать и запускать выпуски вручную следующим образом:

  1. На странице конвейера выпуска вверху справа щелкните Создать выпуск.

  2. На странице Создание выпуска выберите имя стадии в разделе Стадии для изменения активации с автоматической на ручную.

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

  4. Выберите имя выпуска, наведите указатель на этап или выберите его, а затем щелкните Развернуть.

Тестирование веб-приложения Java

После успешного развертывания протестируйте приложение.

  1. Скопируйте URL-адрес веб-приложения с портала Azure.

    App Service app in the Azure portal

  2. Введите URL-адрес в браузере, чтобы запустить приложение. На веб-странице должно отобразится Hello Azure!

    Java web app page