К содержанию

Wiki · Технологии разработки

GitLab CI/CD

Содержание 5 разделов

    GitLab CI/CD – это встроенный в GitLab конвейер, который после каждого изменения кода сам собирает проект, запускает проверки и выкладывает его на сервер. Порядок действий описывают в файле .gitlab-ci.yml в корне репозитория.

    CI (continuous integration, непрерывная интеграция) означает, что каждое изменение автоматически собирают и проверяют. CD (continuous delivery или deployment) означает, что проверенное изменение так же автоматически готовят к выкладке или сразу выкладывают. Для заказчика смысл простой: обновление сайта перестаёт быть ручной операцией, которую кто-то делает по памяти в пятницу вечером.

    Что меняется, когда выкладку делает конвейер

    Без CI/CD обновление часто выглядит так: разработчик копирует файлы на сервер, вручную чистит кеш, забывает про один файл, и сайт падает. Конвейер повторяет одни и те же шаги каждый раз одинаково.

    • Меньше ручных ошибок: никто не забудет файл или команду.
    • Код с упавшими тестами не доходит до боевого сайта.
    • Видна история: кто, когда и какую версию выложил, и к какой вернуться.
    • Конвейер не заменяет тесты. Если проверок нет, он просто быстрее доставит ошибку на сайт.

    Работает это поверх Git: конвейер запускается, когда разработчик отправляет изменения в репозиторий, создаёт merge request, по расписанию или вручную.

    Сравнение ручной выкладки сайта и конвейера GitLab CI/CD: описанные шаги, автоматические тесты и история версий
    Ручная выкладка и конвейер GitLab

    Этапы, задачи и раннеры в .gitlab-ci.yml

    В документации GitLab конвейер (pipeline) состоит из этапов (stages), которые задают порядок, и задач (jobs), которые делают конкретную работу. Типичные этапы: сборка, тесты, выкладка. Выполняют задачи раннеры (runners): программы на отдельной машине или в контейнере Docker.

    stages: [build, test, deploy]
    
    deploy_prod:
      stage: deploy
      script: ./deploy.sh
      when: manual

    Строка when: manual в этом условном примере значит, что выкладка на боевой сайт ждёт нажатия кнопки. Многие команды так и делают: сборка и тесты идут сами, а выпуск на production подтверждает человек.

    Пять шагов конвейера GitLab CI/CD: коммит, сборка, тесты, выкладка на тестовый сайт и выпуск на боевой сайт
    Путь изменения от коммита до сайта

    GitLab.com или свой сервер

    GitLab можно использовать как облачный сервис GitLab.com или установить на свой сервер (self-managed). Исходный код открытой части GitLab опубликован под лицензией MIT, поэтому бесплатную редакцию ставят у себя без покупки лицензии. В облаке Yandex Cloud есть сервис Managed Service for GitLab: он разворачивает и обслуживает отдельный экземпляр GitLab в инфраструктуре облака.

    Про Россию подтверждено официально немногое. В марте 2022 года GitLab объявил, что приостанавливает новый бизнес в России и Беларуси. Как это сказывается на оплате и подписках конкретной компании, на октябрь 2026 года уточняйте у GitLab. Бесплатная редакция на своём сервере не требует покупки подписки, а код и конвейеры остаются в вашей инфраструктуре.

    ВариантДля какой задачи подходит
    GitLab.comБыстрый старт без своего сервера
    Свой GitLab на VPSПолный контроль над кодом и данными, есть кому обслуживать сервер
    Managed Service for GitLab в Yandex CloudСвой экземпляр GitLab, но без ручной установки

    Когда сайту на CMS нужен конвейер

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

    CI/CD в GitLab: выкладка, раннеры и self-hosted

    Чем GitLab CI отличается от Jenkins и GitHub Actions?

    GitLab CI встроен в GitLab и описывается файлом .gitlab-ci.yml в том же репозитории, отдельный сервер ставить не нужно. Jenkins – самостоятельная система, которую подключают к любому хранилищу кода. GitHub Actions выполняет ту же роль для репозиториев на GitHub. Выбирают обычно по тому, где уже лежит код.

    Как объяснить CI/CD простыми словами?

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

    Где запускаются задачи GitLab CI, если GitLab свой?

    На self-managed GitLab задачи выполняют раннеры, которые вы регистрируете сами: на отдельном сервере, виртуальной машине или в контейнерах. Код и секреты при этом не уходят за пределы вашей инфраструктуры.

    Сколько стоит GitLab CI/CD?

    Бесплатная редакция GitLab с CI/CD ставится на свой сервер без лицензии, вы платите только за серверы и работу администратора. Цены платных тарифов и облачных минут смотрите на сайте GitLab или у облачного провайдера.

    Как хранить пароли от сервера в GitLab CI?

    Пароли и ключи хранят в переменных CI/CD в настройках проекта или группы с пометкой маскирования, а не в файле .gitlab-ci.yml. Тогда секрет не попадёт в историю репозитория и не будет виден в журналах задач.

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

    Источники

    • GitLab Docs: Get started with GitLab CI/CD, CI/CD pipelines, GitLab Runner
    • Блог GitLab: заявление от 11 марта 2022 года о приостановке нового бизнеса в России и Беларуси
    • Репозиторий GitLab FOSS: лицензия MIT
    • Документация Yandex Cloud: Managed Service for GitLab

    Остались вопросы по теме «GitLab CI/CD»?

    Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

    Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

    Посчитайте стоимость проекта за 2 минуты

    Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.