0

CI / CD – это просто.

чать 1

Сегодня уже никого не удивить темой CI. Да и трудоемкая, тонкая, хрупкая настройка какого-нибудь выделенного CI сервера под конкретный проект уже тоже отходит в прошлое, когда “поднять CI” было прям “подвигом” каким-то.

Про само понятие Continuous Integration мы говорить сейчас не будем, если кто еще не знаком с этим, то ожидайте отдельной статьи. Давайте лучше бегло пройдемся по одному из вариантов простейшей настройки CI на проекте, ради эффекта “лучше один раз увидеть”, даже если останется куча вопросов :).

Ну, и сразу стоит раскрыть главный секрет этой простоты – это замечательный программный комплекс GitLab.

Это open source проект, который интегрирует в себя очень много элементов разработки ПО: code repository, issue tracking, task planning, time tracking, project wiki, etc.

GitLab поставляется в двух вариантах: CE (Community Edition) и EE (Enterprise Edition). EE вариант содержит закрытые расширения к CE и, соответственно, является платным решением.

GitLab можно развернуть у себя в корпоративной среде (on-premise) или можно воспользоваться SaaS решением по аналогии с GitHub. Ладно, хватит про GitLab, ну, или самое уж последнее… он содержит встроенное CI решение!

Мы в нашей компании активно используем GitLab и его CI, ибо это сильно упрощает многие моменты в разработке ПО. Установка и настройка GitLab CI – это отдельная тема, давайте вернемся к обещанному примеру…

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

Итак, для сборки быстренько подключим Gradle:

Теперь подключим GitLab repository:

Создаем простейшее веб приложение с использованием микро-фреймворка Ratpack:

Надо бы какие-то тесты добавить, и для этого вынесем логику в отдельный юнит:

Хорошо, проект собирается, тесты проходят. Давайте-ка запускать весь этот процесс на нашем GitLab CI.

Для этого достаточно добавить один файл, “.gitlab-ci.yml”. У нас есть shared GitLab CI runner, который настроен для запуска сборки в Docker контейнере (docker executor), т.е. в нашем случае мы возьмем за основу openjdk image:

Вот и все! Мы больше времени потратили на создание самого проекта, чем на настройку CI.

Этого примера должно быть достаточно, чтобы показать насколько простой может оказаться настройка CI. Ну, а дальше уже все зависит от вашей команды, т.е. будете ли вы следовать практике Continuous Integration или нет ?

В следующей части мы продолжим тему CI/CD, в частности затронем топик так называемой докеризации (dockerization) приложения. Stay tuned!

Исходный код примера: https://gitlab.in6k.com/ihoro/example/tree/part1

Дополнительно почитать:

https://habr.com/ru/company/otus/blog/515078/

Облачная платформа

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

2 ci/cd

Что такое CI/CD?

CI/CD (Continuous Integration, Continuous Delivery — непрерывная интеграция и доставка) — это технология автоматизации тестирования и доставки новых модулей разрабатываемого проекта заинтересованным
3

Jenkins

Cистема с открытым исходным кодом, то есть продукт доступен для просмотра, изучения и изменения. Кстати создан на базе Java . Jenkins позволяет автоматизировать часть
Previous Story

SSL certbot Let’s Encrypt

Next Story

Prometheus

Latest from Blog

Docker: собираем веб сервер

Ниже предоставлен готовый набор окружения веб сервера на базе контейнеров Docker. Включает в себя MySQL, PHP, NGINX, composer, SSL сертификаты и механизм резервного копирования в облако. Код доступен на github. Компоненты сервера Для

Как с помощью docker запустить окружение для разработки nginx + php + mysql

Создание проекта Compose Подготовка контейнерной среды разработки веб-приложения отождествляется с созданием проекта Compose. Для этого начинать нужно с создания каталога проекта Compose.Его имя – new_compose_project. Создадим каталог, после чего перейдем к нему. Введем в

обновить Debian 11 до Debian 12 Bookworm

Подготовка системы к обновлению Перед обновлением рекомендую ознакомиться с официальным руководством Upgrades from Debian 11 (bullseye). Мои дальнейшие действия соответствуют некоторым рекомендациям из этого документа. В первую очередь проверьте все бэкапы. И по

Мониторинг докер-хостов, контейнеров и контейнерных служб

Я искал self-hosted мониторинговое решение с открытым кодом, которое может предоставить хранилище метрик, визуализацию и оповещение для физических серверов, виртуальных машин, контейнеров и сервисов, действующих внутри контейнеров. Опробовав Elastic Beats, Graphite и
Go toTop

Don't Miss

gitlab

Создать проект/репозиторий GitLab из командной строки

В GitLab вы можете создать новый проект/репозиторий не только через
ci/cd

Что такое CI/CD?

CI/CD (Continuous Integration, Continuous Delivery — непрерывная интеграция и доставка)