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

Настройка роутера MikroTik с BGP для просмотра потокового видео дома

Про сервис antifilter.download Из-за большого наплыва пользователей после блокировки YouTube сервис испытывает перегрузки. Обещают починить. Изначально я пользовался именно сервисом antifilter.download, но по непонятным для меня причинам он перестал у меня работать. Я

Решаем проблему блокировок (и YouTube) за 5 минут на роутере Mikrotik через контейнеры и без VPN

как ускорить ютуб и разблокировать доступ к некоторым заблокированным ресурсам прямо на роутере Mikrotik и без VPN. В моем случае используется MikroTik hAP ax3. Стоит упомянуть, что подойдут только роутеры с архитектурой

Mikrotik — несколько ip на внешнем интерфейсе

Рассмотрим ситуацию, когда провайдер выдал нам один шнурок и несколько ip в нем (например, /29 подсеть). И за нашим роутером находится несколько разных подсетей, которые надо выпускать наружу с разными src-ip; также

Игра системный администратор

docker run -p 8080:8080 -p 3390:3389 –name play-adobe-flash-after-eol jchprj/play-adobe-flash-after-eolзайти localhost:8080, и открыть эту страницу, или https://serveradmin.ru/files/sysadmin.swf

Что делать, когда на сервере кончаются файловые дескрипторы (inode)

Нередки случаи, когда причиной проблем на сервере становится переполнение файловых дескрипторов (inode). Симптомы точно такие же, как при переполнившемся диске, только вот диск при этом может оказаться свободным. Количество inode каждой файловой системы определяется при разворачивании ОС.
Go toTop

Don't Miss

gitlab

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

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

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

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