Инструменты CI/CD: GitLab CI

На рынке доступно множество инструментов непрерывной интеграции и непрерывного развёртывания. Эти инструменты играют ведущую роль в координации и автоматизации работы на различных этапах CI/CD-пайплайна.

Мы пообщались с Александром Довнаром, Lead DevOps в Naviteq, и узнали, как безопасность проекта связана с выбором CI/CD-инструмента. Подробно остановились на том, что такое GitLab CI, кому он подходит и почему его стоит использовать. 

deae79999bb166a6761b62c92f6dbc2d.jpg

Внедрение CI/CD

CI/CD — DevOps-практика, которая подразумевает непрерывную интеграцию и доставку. Одна из причин, почему бизнес решает внедрить CI/CD, состоит в возможности сокращения Lead Time. Это ключевая метрика, определяющая время от возникновения идеи какого-то функционала до конечной поставки клиенту, когда он уже может этим функционалом пользоваться. 

CI/CD помогает сократить Lead Time, увеличить стабильность и скорость релизов, добиться прозрачности на проекте — мы видим всё, что происходит. В конечном счёте это ведёт к выравниванию коммуникаций в команде.

Однако внедрить и правильно реализовать CI/CD дорого и с точки зрения инфраструктуры, и с точки зрения времени, которое нужно потратить. Если у вас на проекте нет СI/CD, пытаться сразу построить автоматизированное нагрузочное тестирование на мультиплатформенной системе в нескольких дата-центах пока преждевременно. Реализация должна двигаться от простого к сложному. Начните с CI: соберите и протестируйте проект, попробуйте деплоить по кнопке. Затем можно расширить тесты и окружения, перейти к непрерывному развёртыванию и т.д. 

Важно понимать, что внедрение CI/CD не даёт видимых результатов мгновенно. Но в долгосрочной перспективе оно позволяет бизнесу быстрее расти и развиваться за счёт автоматизации процессов.

При этом просто внедрить CI/CD мало, его ещё нужно поддерживать. Для этого либо нанимают отдельных инженеров, которые будут расширять и сопровождать CI/CD-процесс, либо делают такие задачи общей ответственностью. Во втором случае дополнительные обязанности накладываются на всю команду, и действует принцип »заметил, что что-то работает не так, — поправь». Если вдруг CI/CD-пайплайн доставки в продакшн перестаёт работать, все бросают свои дела и идут решать эту проблему. 

Резюмируем: внедрение CI/CD — это долго, дорого и сложно, но в долгосрочной перспективе помогает экономить ресурсы, время и деньги. Если наши процессы автоматизированы, мы можем легко и бесшовно масштабироваться. Если же мы изначально игнорируем автоматизацию, по мере развития проекта у нас появляется всё больше проблем с разных сторон, и работать дальше становится сложно.  

Безопасность и выбор инструмента CI/CD

Безопасность CI/CD во многом зависит от того, какие инструменты мы используем. Есть немало историй, когда код, который должен быть приватным, частично утекал. Например, в облачной инфраструктуре GitHub злоумышленникам удалось организовать майнинг криптовалюты, используя для запуска кода инструмент GitHub Actions.

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

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

Инструменты CI/CD

Основа инструментария CI/CD — сервис или приложение, на базе которого вы реализуете CI/CD. Это то, что позволяет вам запускать Jenkins, Gitlab CI, GitHub Actions и дальше по списку. 

Основная задача CI/CD-инструмента — координировать деятельность множества систем: системы контроля версий, инструментов сборки, фреймворков автоматизированного тестирования, менеджеров зависимостей, баг-трекеров и платформ контейнеризация. 

В каждом инструменте есть спецификация того, что и как он умеет делать. Мы описываем это в определённом формате и дальше как кубики добавляем в пайплайн другие инструменты, которые помогут закрыть наши задачи. Например, мы можем добавить SonarQube для проверки покрытия пайплайна тестами, Docker — для сборки Docker-образа и т.д. 

Эти разные большие и мелкие инструменты — не CI/CD в чистом виде. Тот же Docker — масштабная платформа, но без неё мы не сможем собрать контейнер, поэтому она часть CI/CD и инструмент CI/CD для реализации сборки конкретного приложения. 

Почему стоит выбрать GitLab CI в качестве инструмента CI/CD

GitLab CI начал одним из первых двигаться в направлении All-in-One. Это не просто хранилище исходного кода, а полноценная DevOps-платформа, где вы можете вести проекты с задачами и досками, отслеживать состояние окружений, хранить всевозможные типы артефактов, использовать интегрированное контейнер-хранилище, подключать Terraform-модуль и многое другое. 

Благодаря своей стабильности, относительной бесплатности и мощной поддержки комьюнити GitLab CI стал одним из основных игроков на рынке. Он претерпел много изменений и улучшений и прямо сейчас позволяет:

  • управлять конфигурациями с помощью файла в формате YAML;

  • легко параллелить запуски и запускаться в абсолютно разных средах;

  • собирать и выполнять команды на любых ОС;

  • запускать задачи в Docker-контейнерезированных окружениях;

  • интегрироваться с Kubernetes-кластерами. 

GitLab CI выбирают и маленькие стартапы, и крупные энтерпрайз-компании. Он предоставляет и хранилище кода, и гибкую CI-систему с большим количеством функций, которые сильно облегчают реализацию конечной картинки CI/CD-пайплайна. А ещё его можно установить не только в облаке, но и локально.

Для тех, кто хочет разобраться в GitLab CI

20 июня в Слёрм стартует усовершенствованный курс »CI/CD на примере Gitlab CI». Вы научитесь применять принципы CI/CD и работать с GitLab CI: разберёте лучшие практики построения пайплайна, особенности шаблонизации и работы с переменными.

Посмотреть программу и записаться: https://slurm.club/3xoZLo4

© Habrahabr.ru