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


Руководство: Развертывание в Azure App Service с помощью Jenkins и Azure CLI

Это важно

Хотя многие службы Azure имеют подключаемые модули Jenkins, большинство этих подключаемых модулей завершили поддержку с 29 февраля 2024 года. Azure CLI — это рекомендуемый в настоящее время способ интеграции Jenkins с службами Azure. Для получения дополнительной информации см. статью плагины Jenkins для Azure.

Чтобы развернуть веб-приложение Java в Azure, можно использовать Azure CLI в конвейере Jenkins. В этом руководстве описаны следующие задачи:

  • Создание виртуальной машины Jenkins
  • Настройка Jenkins
  • Создание веб-приложения в Azure
  • Подготовка репозитория GitHub
  • Создание конвейера Jenkins
  • Запуск конвейера и проверка веб-приложения

Предпосылки

Настройка Jenkins

Ниже показано, как установить необходимый JDK Java и Maven на контроллере Jenkins:

  1. Войдите в контроллер Jenkins с помощью SSH.

  2. Скачайте и установите сборку Azul Zulu OpenJDK для Azure из репозитория apt-get:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
    sudo apt-add-repository "deb http://repos.azul.com/azure-only/zulu/apt stable main"
    sudo apt-get -q update
    sudo apt-get -y install zulu-8-azure-jdk
    
  3. Выполните следующую команду, чтобы установить Maven:

    sudo apt-get install -y maven
    

Добавление субъекта-службы Azure в учетные данные Jenkins

Ниже показано, как указать учетные данные Azure:

  1. Убедитесь, что плагин «Учетные данные» установлен.

  2. На панели мониторинга Jenkins выберите "Учетные данные" —> "Система".>

  3. Выберите глобальные учетные данные (неограниченные).

  4. Выберите «Добавить учетные данные», чтобы добавить учетную запись службы Microsoft Azure. Убедитесь, что тип учетных данных имеет имя пользователя с паролем и введите следующие элементы:

    • Имя пользователя: основной объект службы appId
    • Пароль: учетная запись службы password
    • Идентификатор: идентификатор учетных данных (например AzureServicePrincipal)

Создание службы приложений Azure для развертывания веб-приложения Java

Используйте az appservice plan create для создания плана службы приложений Azure с ценовой категорией FREE:

az appservice plan create \
    --name <app_service_plan> \ 
    --resource-group <resource_group> \
    --sku FREE

Основные моменты:

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

Создание веб-приложения Azure

Используйте az webapp create для создания определения веб-приложения в плане службы приложений myAppServicePlan .

az webapp create \
    --name <app_name> \ 
    --resource-group <resource_group> \
    --plan <app_service_plan>

Основные моменты:

  • Определение веб-приложения предоставляет URL-адрес для доступа к приложению и настраивает несколько вариантов развертывания кода в Azure.
  • Замените <app_name> контейнер уникальным именем приложения.
  • Имя приложения является частью доменного имени по умолчанию для веб-приложения. Поэтому имя должно быть уникальным для всех приложений в Azure.
  • Вы можете сопоставить запись имени личного домена с веб-приложением, прежде чем предоставлять его пользователям.

Настройка Java

Используйте az appservice web config update , чтобы настроить конфигурацию среды выполнения Java для приложения:

az webapp config set \ 
    --name <app_name> \
    --resource-group <resource_group> \ 
    --java-version 1.8 \ 
    --java-container Tomcat \
    --java-container-version 8.0

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

  1. Откройте простое веб-приложение Java для Репозитория Azure .

  2. Нажмите кнопку Fork, чтобы форкнуть репозиторий в собственную учетную запись GitHub.

  3. Откройте файл Jenkinsfile , щелкнув имя файла.

  4. Щелкните значок карандаша, чтобы изменить файл.

  5. Обновите идентификатор подписки и идентификатор клиента.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Обновите группу ресурсов и имя веб-приложения в строке 22 и 23 соответственно.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Обновите идентификатор учетных данных в вашей системе Jenkins

    withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
    

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

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

  1. Откройте Jenkins в веб-браузере.

  2. Выберите New Item (Создать элемент).

  3. Введите имя должности.

  4. Выберите Конвейер.

  5. Нажмите ОК.

  6. Выберите Конвейер.

  7. Для определения выберите сценарий конвейера из SCM.

  8. Для SCM выберите Git.

  9. Введите URL-адрес GitHub для вилированного репозитория: https:\<forked_repo\>.git

  10. Нажмите кнопку "Сохранить"

Тестирование конвейера

  1. Перейдите к созданному конвейеру

  2. Выберите "Создать сейчас"

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

Проверка веб-приложения

Выполните следующие действия, чтобы убедиться, что WAR-файл успешно развернут в веб-приложении:

  1. Перейдите по следующему URL-адресу: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. Вы должны увидеть текст, аналогичный следующему:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Перейдите по следующему URL-адресу (замените <x> и <y> на два значения, которые нужно суммировать): http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>.

    Пример запуска демонстрационного дополнения

Развертывание на Службе приложений Azure в среде Linux

Служба приложений также позволяет размещать веб-приложения из поддерживаемых стеков приложений непосредственно на Linux. Он также может запускать пользовательские контейнеры Linux (также известные как веб-приложение для контейнеров).)

Скрипт можно изменить для развертывания в Службе приложений Azure в Linux. Служба приложений в Linux поддерживает Docker. Таким образом, вы предоставляете Dockerfile, который упаковывает ваше веб-приложение вместе с средой выполнения в образ Docker. Подключаемый модуль создает образ, отправляет его в реестр Docker и развертывает образ в веб-приложении.

  1. Дополнительные сведения см. в статье "Миграция пользовательского программного обеспечения в Службу приложений Azure" с помощью пользовательского контейнера для создания службы приложений Azure в Linux и реестра контейнеров Azure.

        az group create --name myResourceGroup2 --location westus2
        az acr create --name myACRName --resource-group myResourceGroup2 --sku Basic --admin-enabled true
        az appservice plan create --name myAppServicePlan --resource-group  myResourceGroup2 --is-linux
        az webapp create --resource-group myResourceGroup2 --plan myAppServicePlan --name myApp --deployment-container-image-name myACRName.azurecr.io/calculator:latest
    
  2. Установите Docker на Jenkins.

  3. Убедитесь, что плагин для Docker Pipeline установлен.

  4. В том же репозитории простого веб-приложения Java для Azure, который вы форкнули, измените файл Jenkinsfile2 следующим образом:

    1. Обновите идентификатор подписки и идентификатор клиента.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Обновите имена группы ресурсов, веб-приложения и ACR (заменив заполнители вашими значениями).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Обновите <azsrvprincipal\> на идентификатор ваших учетных данных

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Создайте новый конвейер Jenkins так же, как вы создавали его при развертывании в веб-приложении Azure на Windows, используя Jenkinsfile2.

  6. Запустите новое задание.

  7. Чтобы проверить, в Azure CLI выполните следующую команду:

    az acr repository list -n <myRegistry> -o json
    

    Вы увидите результаты, аналогичные следующим:

    [
    "calculator"
    ]
    
  8. Перейдите к http://<app_name>.azurewebsites.net/api/calculator/ping (замена заполнителя). У вас должен отобразиться результат, аналогичный следующему:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. Перейдите на http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> страницу (замена заполнителей). Заданные значения x и y суммируются и отображаются.

Дальнейшие шаги