Рубрики
Uncategorized

Docker и Java Spring Boot [Part.1: Непрерывная интеграция]

Этот пост был первоначально опубликован в Jaxenter. В этом руководстве мы узнаем, как непрерывная порка … Теги с Java, Docker, DevOps, микросервисами.

Этот пост был изначально опубликован в дьяксель .

В этом уроке мы узнаем, насколько непрерывная интеграция и доставка могут помочь нам проверить и подготовить приложение Java для Docker.

Установка непрерывной интеграции (CI) проверит наш код на каждом обновлении. Практика создает сильную петлю обратной связи, которая показывает ошибки, как только они будут введены. Следовательно, мы можем потратить больше наших временных кодировков, а не охотничьих жуков.

Мы будем использовать Docker для упаковки, поскольку оно поддерживается универсально во всех облачных поставщиков. Кроме того, Docker является требованием для более продвинутых развертываний, таких как Kubernetes. Во второй части учебника мы узнаем, что мы можем использовать непрерывный развертывание (также CD) для развертывания новых версий в Kubernetes на кнопке нажатия.

Готовиться

Вот список вещей, которые вам нужно будет начать.

  • Ваш любимый код IDE и Java SDK.
  • А Docker Hub аккаунт и докер.
  • A Github аккаунт и Гит Отказ

Давайте все готово. Во-первых, вилка Репозиторий с демонстрацией и клонировать это на вашу машину.

Приложение встроено в Java Spring Boot, и он обнародует некоторые конечные точки API. Проект включает в себя тесты, ориентиры и все необходимое для создания образа докера.

Непрерывная интеграция

Мы будем использовать семафор как нашего Непрерывная интеграция решение. Наш рабочий процесс CI/CD будет:

  1. Скачать Java зависимости.
  2. Создайте банку приложения.
  3. Запустить тесты и Jmeter ориентиры. А также, если все пойдет хорошо…
  4. Создайте изображение докера и нажмите его в Docker Hub.

Но сначала откройте свой браузер на Семафор и зарегистрироваться с github; Это свяжет оба сервиса. Бесплатная учетная запись включает в себя 1300 ежемесячных минут сборки. Нажмите на + (плюс знак) рядом с Проекты Чтобы добавить свой репозиторий в семафор:

Репозиторий имеет образец рабочего процесса CI/CD. Выберите «Я буду использовать существующую конфигурацию».

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

$ touch some_file
$ git add some_file
$ git commit -m "add Semaphore"
$ git push origin master

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

Нажмите на Редактировать рабочий процесс Кнопка для просмотра недавно выпущенного рабочего процесса построителя UI.

У каждого трубопровода есть Имя и агент . Агент является виртуальным типом машины, который способствует заданиям. Семафор предлагает несколько Типы машин мы будем использовать бесплатную E1-Standard-2 Модель с Ubuntu 18.04 Отказ

Работа Определите команды, которые дают жизнь процессу CI/CD, они сгруппированы в Блоки Отказ Нажмите на блок «Построить», чтобы просмотреть его работу:

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

Первая задача загружает зависимости и создает банку приложения без запуска каких-либо тестов:

checkout
cache restore
mvn -q package jmeter:configure -Dmaven.test.skip=true
cache store

Блок использует некоторые из сценариев Toolbox Semaphore: Оформить заказ клонировать репозиторий и кэш хранить и получить зависимости Java.

Второй блок имеет два тестовых задания. Команды, которые мы определяем в Пролог Запустить перед каждой работой в блоке:

checkout
cache restore
mvn -q test-compile -Dmaven.test.skip=true

Третий блок запускает приложение и запускает ориентиры:

java -version
java -jar target/spring-pipeline-demo.jar > /dev/null &
sleep 20
mvn -q jmeter:jmeter
mvn jmeter:results

Храните учетные данные Docker Hub

Надежно хранить пароли, семафор предоставляет Секреты характерная черта. Создайте секрет с вашим именем пользователя и паролем Docker Hub. Семафор понадобится, чтобы они подталкивали изображения в ваш репозиторий:

  • Под Конфигурация Нажмите на Секреты Отказ
  • Нажмите Создать новый секрет кнопка.
  • Создайте секрет под названием «Dockerhub» с вашим именем пользователя и паролем:

Непрерывная доставка

Рядом с Benchmark Block мы находим Продвижение который соединяет CI и трубопроводы «докеремизации» вместе. Акции Подключите трубопроводы для создания разветвленных рабочих процессов. Проверьте Включить автоматическую продвижение Возможность запустить сборку автоматически.

Демо включает в себя Dockerfile Чтобы упаковать приложение в документ докера:

FROM openjdk:8-jdk-alpine
ARG ENVIRONMENT
ENV ENVIRONMENT ${ENVIRONMENT}
COPY target/*.jar app.jar
ENTRYPOINT ["java","-Dspring.profiles.active=${ENVIRONMENT}", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Трубопровод «докеремизации» изготовлен из одного блока с одной работой, который:

  • Логины до докера Hub
  • Тянет новейшее изображение
  • Создает новое изображение с обновленным кодом
  • Толкает новое изображение
mvn -q package -Dmaven.test.skip=true
echo "$DOCKER_PASSWORD" | docker login  --username "$DOCKER_USERNAME" --password-stdin
docker pull "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest || true
docker build --cache-from "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest \
      --build-arg ENVIRONMENT="${ENVIRONMENT}" \
      -t "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest .
docker push "$DOCKER_USERNAME"/semaphore-demo-java-spring:latest

Тестирование изображения

Нажмите на Запустите рабочий процесс кнопка, а затем выберите Начать Отказ

Через пару минут рабочая процесс должен быть завершен, и у вас должен быть новый документ докера с вашим приложением в Docker Hub:

К настоящему времени у вас должен быть готовый образец докера в вашем репозитории. Давайте пойдем. Потяните недавно созданное изображение на свою машину:

$ docker pull YOUR_DOCKER_USER/semaphore-demo-java-spring:latest

И начните в своей машине:

$ docker run -it -p 8080:8080 YOUR_DOCKER_USER/semaphore-demo-java-spring

Вы можете создать пользователь с запросом пост:

$ curl -w "\\n" -X POST \
    -d '{ "email": "wally@example.com", "password": "sekret" }' \
    -H "Content-type: application/json" localhost:8080/users

{"username":"wally@example.com"}

С созданным пользователем вы можете аутентифицировать и увидеть безопасную веб-страницу:

$ curl -w "\n" --user wally@example.com:sekret localhost:8080/admin/home




Welcome tom@example.com!

Вы также можете попробовать его со страницей входа в localhost: 8080/admin/home

Следующая остановка: Kubernetes

Увидимся в части 2, чтобы узнать, как развернуть изображение для любой Кубернеты:

Kubernetes и Java Spring Boot [Part.2: Непрерывное развертывание]

Томас Фернандес · 30 января 20 мин. читать

Заключение

Вы настроили свой первый CI/CD-трубопровод. С этой системой вы можете работать в вашем коде, безопасно в ощущении, что он постоянно проверяется.

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

Вы нашли пост полезным? Дайте мне знать на ❤️-ing или 🦄-ing ниже! Есть ли у вас какие-либо вопросы или предложения для других учебников? Дай мне знать в комментариях.

Спасибо за чтение!

Оригинал: «https://dev.to/semaphore/docker-and-java-spring-boot-part-1-continuous-integration-1mfl»