Это сообщение в блоге является частью серии “развертывание приложения Spring Boot и Angular в Azure”, вот полный список сообщений:
- Создание приложения Spring Boot и Angular для Azure (1/7)
- Создание и настройка веб-приложения Azure и MySQL для размещения приложения Spring Boot (2/7)
- Использование конвейеров Azure для создания, тестирования и развертывания приложения Spring Boot и Angular (3/7)
- Использование Azure Application Insights с Spring Boot (4/7)
- Использование Azure Application Insights с Angular (5/7)
- Настройка Azure CDN для повышения производительности Angular (6/7)
- Настройка кэша Azure Redis для повышения производительности Spring Boot (7/7)
Развертывание приложения Spring Boot в Azure
Существует несколько способов развертывания приложения Spring Boot в Azure. Один из самых простых способов – использовать плагин Maven для службы приложений Azure . Для нашего варианта использования мы хотим выйти за рамки простого приложения “Привет, мир”, и поэтому мы собираемся настроить полное решение CI/CD (Непрерывная интеграция/непрерывное развертывание), используя Лазурные конвейеры .
Как всегда, мы здесь экономим на бюджете: Azure Pipelines предоставляет щедрый бесплатный уровень, которого нам должно быть в значительной степени достаточно, поэтому мы ничего не должны платить.
Создание файла azure-pipelines.yml
Чтобы создать и протестировать наше приложение с помощью Azure Pipelines, нам понадобится файл azure-pipelines.yml
в корне нашего проекта.
С JHipster нам повезло, нам просто нужно запустить jhipster ci-cd
и ответить на пару вопросов, чтобы получить очень полную конфигурацию Azure Pipelines.
Вы можете проверить сгенерированный файл на this commit .
Этот конвейер будет создавать и тестировать приложение (как серверную часть Spring Boot, так и интерфейс Angular), поэтому это конвейер “непрерывной интеграции”. Если вам нужна дополнительная информация о задачах Azure Pipelines, вам следует обратиться к документации Azure Pipelines/| . Создать простую сборку Maven очень просто, тогда для выполнения более сложных конфигураций, как мы делаем с JHipster, может потребоваться немного больше времени.
Автоматическое развертывание с помощью конвейеров Azure в веб-приложение Azure
В предыдущем разделе мы создали файл azure-pipelines.yml
: мы собираемся добавить в него новую задачу, чтобы опубликовать производственную сборку, как только все тесты будут пройдены. В результате он больше не будет выполнять только “Непрерывную интеграцию”, но и полное “Непрерывное развертывание”.
Откройте файл azure-pipelines.yml
и добавьте в конце его:
- script: ./mvnw package -Pprod -DskipTests displayName: 'BUILD: creating production build' - task: CopyFiles@2 inputs: SourceFolder: 'target' Contents: '*.jar' TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 inputs: pathtoPublish: '$(Build.ArtifactStagingDirectory)' artifactName: bugtracker
На самом деле мы используем 3 задачи:
- Один для создания производственной сборки с помощью Hipster. Пожалуйста, обратите внимание, что здесь мы пропускаем тесты, которые они должны были пройти раньше.
- Еще один способ скопировать сгенерированный файл JAR-файла в каталог, где хранятся артефакты.
- И последний, кто взял этот артефакт и опубликовал его.
Это автоматически опубликует артефакт вашей производственной сборки в Azure Pipelines.
ПРЕДУПРЕЖДЕНИЕ Поскольку веб-приложение Azure использует артефакт, который должен быть назван app.jar
, нам нужно будет правильно назвать наш артефакт. Самый простой способ сделать это – создать его непосредственно с правильным именем, используя атрибут final Name
в вашем pom.xml
:
app ...
Вы можете проверить изменения, которые мы только что внесли, чтобы настроить “Непрерывное развертывание” в this commit .
Отправьте приложение на GitHub и настройте конвейеры Azure
Если вы еще этого не сделали, отправьте свое приложение на GitHub: если вы не хотите, чтобы ваше приложение было общедоступным, помните, что GitHub предоставляет бесплатные неограниченные частные репозитории.
Как только ваше приложение будет размещено на GitHub, перейдите на GitHub marketplace , чтобы установить и настроить конвейеры Azure.
Затем вы можете войти в Azure Devops для настройки ваших конвейеров Azure:
- Создайте новый проект.
- В меню слева выберите “Конвейеры > Сборки” и создайте “новый конвейер”.
- Выберите “GitHub” и выберите проект GitHub, который вы только что создали, выполнив описанные выше действия.
- Поскольку мы создали файл
azure-pipelines.yml
в предыдущем разделе, он будет автоматически подобран, поэтому вам просто нужно “Запустить” его (с помощью кнопки в правом верхнем углу), чтобы посмотреть, как ваше приложение создается с помощью Azure Pipelines.
Поскольку эта сборка является сборкой “полного стека”, она будет компилировать, упаковывать и тестировать весь ваш код Spring Boot и Angular. Как вы можете себе представить, это довольно сложная задача, и на ее выполнение должно уйти чуть больше 5 минут.
Развертывание приложения в Azure Web App
Как только Azure Pipelines создаст ваше приложение в первый раз, оно опубликует артефакт проекта. В правом верхнем углу появится новая кнопка “Релиз”: нажмите на нее, чтобы создать новый релиз.
Вы увидите там свой опубликованный артефакт и сможете добавить к нему новые “этапы”, чтобы автоматически развернуть его в рабочей среде.
Создайте новый “этап” и выберите “Развернуть Java-приложение в службе приложений Azure”. Как только этот этап будет создан, откройте его и:
- Дайте ему осмысленное название
- Подключите его к вашей подписке Azure: вам нужно будет нажать на кнопку “Авторизоваться” и следовать инструкциям мастера авторизации
- Измените тип приложения на “Веб-приложение в Linux”, поскольку это то, что мы создали в предыдущем сообщении в блоге
- Выберите имя службы вашего приложения
Затем вам нужно изменить 2 задачи, настроенные на этом этапе:
- Удалите первую задачу, называемую “Развернуть ВОЙНУ в службе приложений Azure”, поскольку мы не развертываем ВОЙНУ.
- Включите вторую задачу, называемую “Развернуть JAR в службу приложений Azure”.
Теперь вы можете перейти в раздел “Конвейеры > Выпуски” и нажать на кнопку “Создать выпуск”. Это должно использовать ранее созданный артефакт (созданный с помощью azure-pipelines.yml
) и автоматически развернуть его в вашем экземпляре веб-приложения Azure.
Теперь вы можете подключиться к своему приложению и использовать его в рабочей среде. Поскольку это приложение JHipster, вот несколько советов, которые следует запомнить:
- По умолчанию есть 2 учетные записи,
admin
(с паролемadmin
) иuser
(с паролемпользователь
) - Управление схемой базы данных осуществляется с помощью Ликвидная база , поэтому при запуске приложения оно автоматически обновляет схему базы данных. Эта схема была создана в предыдущем сообщении в блоге с использованием MySQL Workbench.
- Если вы запустили приложение в процессе разработки на своем локальном компьютере, JHipster заполнил вашу базу данных некоторыми фиктивными данными, используя faker.js . В рабочем режиме, поскольку предполагается, что вы используете некоторые реальные данные, в вашей базе данных по умолчанию этих данных не будет.
Теперь каждый раз, когда проходит наша сборка, ваше приложение будет автоматически развертываться в рабочей среде, где оно будет автоматически управляться Azure Web Apps. Больше никаких производственных проблем, просто “git push”, и все готово!
Соображения о времени запуска и бюджетах
Возможно, вы заметили, что приложение запускается немного медленно, это занимает чуть больше 1 минуты. Наш наихудший сценарий составлял 100 секунд, так что это должно быть меньше 2 минут, но все равно это много времени!
У нас здесь два виновника: хипстер и оборудование. Мы действительно можем запустить JHipster примерно за треть этого времени с помощью различных настроек (в основном отключающих такие функции, как Liquibase). Прирост производительности может быть важен, так как здесь мы находимся на пределе памяти JVM, поэтому сборщик мусора работает усердно, и удаление нескольких функций ему очень поможет.
Затем выбранное оборудование оказалось не очень хорошим, так как мы хотели сэкономить и выбрали коробку “B1”: в течение первого месяца она бесплатна, а затем очень недорогая (около 30 долларов в месяц). Вот почему наша память слишком ограничена, а также почему наш процессор ограничен. Azure подсчитывает мощность процессора в “ACU”, что означает вычислительные единицы Azure, а поле B1 составляет всего 100 Acid.
Протестировать более мощный экземпляр на удивление просто: в вашем веб-приложении Azure выберите “Увеличить масштаб” и выберите экземпляр “P2V2”. Обновление выполняется на лету! На этом новом оборудовании, площадь которого составляет 420 акров (то есть более чем в 4 раза превышает вычислительную мощность “B1”), время запуска теперь составляет всего 15 секунд. Конечно, вы можете в любой момент уменьшить масштаб и вернуться к экземпляру “B1”.
Оригинал: “https://dev.to/azure/using-azure-pipelines-to-build-test-and-deploy-a-spring-boot-and-angular-application-3-7-593j”