Убийца Jenkins. TeamCity? Лучше — CircleCI!

Привет!
Хотел поделиться с вами небольшой находкой, которую я совсем недавно обнаружил. Речь пойдёт про прекрассный CI/CD сервис — CircleCI.

Когда мы говорим о непрерывной интеграции и деплое, чаще всего на ум приходят ровно два решения — Бесплатный, неприятный, лагающший, херовый Дженкикс и прекрасный, cool и даже pretty — ТимСити. Но он, сука, стоит кучу денег, а у нас кризис, импортозамещение, и вообще, жаба душит, не хочется кому-то платить бабло.

В этот момент люди вспоминают, что на рынке существует ещё овер дохера решений по CI/CD. Самое популярное из них — это Travis CI. Именно на тревис в основном дрочат все открытые проекты на гитхабе. Так сложилось чисто исторически, что это решение было первым на рынке cool CI.

Однако время идёт, мир меняется. Теперь мы не одним Тревисом едины. Есть и такой прекрасный сервис, как CircleCI. Сёкл-ом можно пользоваться, как бесплатно (у вас будет лишь одна нода для запуска процесса сборки), так и платно — платя по 50$ за каждый следующий воркер, после первого.

Как работает в общем CircleCI? Ничего хитрого. Вся сборка происходит на Линуксах, в Докер-контейнере. Для сборки задаётся один основной контейнер, который свойственнен вашему языку, а также ряд вторичных контейнеров, которые выступают в качестве сервисов. Самый типичный сервис — это БД, которую вы можете использовать для интеграционных тестов при сборки проекта.

Pipeline сборки описывается в отвратительном (моё оценочное суждение, nothing personal) yml-файле. Всё, как обычно, сначала конфигурируем рабочее окружение. Затем описываем набор step, в каждом из которых выполняется какое-то атамарное действие: checkout файлов с гита, запуск грэдл таска, ожидание запуска БД и тд.

Я для примера набросал простой spring boot проект (spring boot, jooq, flyway, postgresql) — https://github.com/Hixon10/spring-boot-circle-ci. Для тестирования данного приложения на Сёкле потребовалось написать такой конфиг:

Как вы видите, ничего хитроного. Весьма стандартный способ описания Пайплайна в CI.

Подытожив статью, хочу выделить приятные стороны CircleCI:

  • Есть бесплатный аккаунт — можно использовать для Пет Проджектов.
  • Отличная документация. Есть даже скринкасты с прекрасными белыми американцами.
  • Большое количество примеров использования CI — всегда можно найти решение своей проблемы
  • Отличное API — даже, если в сервисе не реализована интеграция с вашим облаком, то вы можете сами написать скрипты деплоя.
  • Большое количество готовых решений — образов — https://circleci.com/docs/2.0/circleci-images/. Я, например, заюзал сервис Постгри для интеграционных тестов — и это делается буквально в несколько строк кода.

Категории: Программирование