GitLab Runner: Полное руководство по настройке вашего CI/CD конвейера

GitLab Runner: Полное руководство по настройке вашего CI/CD конвейера

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

Что такое GitLab Runner и зачем он нужен?

GitLab Runner — это отдельное приложение, которое выполняет задания (jobs), описанные в файле .gitlab-ci.yml. Он работает на любой машине (вашем ноутбуке, выделенном сервере, в облаке или даже в контейнере) и подключается к основному серверу GitLab. Без Runner'а ваш CI/CD пайплайн — это просто текст в файле. Runner — это тот самый «рабочий», который берет инструкции и выполняет их: собирает проект, запускает тесты, разворачивает приложение.

Важно понимать: GitLab Runner и сервер GitLab — это разные сущности. Runner можно установить где угодно, и он будет общаться с вашим GitLab (облачным или self-hosted) через API.

Типы раннеров: какой выбрать?

GitLab предлагает три основных типа раннеров, отличающихся областью видимости и управлением:

  • Shared Runners: Общие раннеры, управляемые администратором инстанса GitLab. Доступны для всех проектов. Идеальны для начала работы, но могут иметь ограничения.
  • Group Runners: Раннеры, зарегистрированные на уровне группы проектов. Доступны для всех проектов внутри этой группы. Отлично подходят для команд, работающих над несколькими связанными репозиториями.
  • Project Runners: Приватные раннеры, привязанные к конкретному проекту. Максимальный контроль и изоляция. Используются для специфических требований проекта (особое железо, софт, безопасность).

Пошаговая настройка GitLab Runner

Шаг 1: Установка

Установка зависит от вашей ОС. Для Ubuntu/Debian это можно сделать через официальный репозиторий:

  1. Добавьте репозиторий GitLab: curl -L \"https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh\" | sudo bash
  2. Установите пакет: sudo apt-get install gitlab-runner

Для других систем (Windows, macOS, Docker) инструкции есть на официальном сайте.

Шаг 2: Регистрация раннера

Это ключевой этап «знакомства» раннера с вашим сервером GitLab. Вам понадобятся два значения из интерфейса GitLab:

  1. URL вашего GitLab-сервера (например, https://gitlab.com).
  2. Registration Token. Его можно найти в настройках проекта, группы или инстанса (для Shared Runner) в разделе CI/CD -> Runners.

Запустите команду регистрации: sudo gitlab-runner register. Интерактивный мастер запросит URL, токен, описание, теги (например, docker, linux) и исполнитель (executor).

Выбор executor — важнейшее решение. docker — самый популярный, он запускает каждое задание в чистом контейнере. shell — выполняет команды напрямую на хосте раннера (менее безопасно, но проще для доступа к системе). kubernetes — для запуска в кластере K8s.

Шаг 3: Настройка конфигурации (config.toml)

После регистрации создается файл конфигурации (обычно /etc/gitlab-runner/config.toml). Здесь можно тонко настроить поведение: ограничить количество параллельных заданий, настроить кеширование, задать переменные среды по умолчанию, изменить Docker-образ по умолчанию.

Шаг 4: Запуск службы и проверка

Запустите службу: sudo gitlab-runner start. Убедитесь, что раннер работает: sudo gitlab-runner status. В интерфейсе GitLab в разделе CI/CD -> Runners вы должны увидеть вашего раннера в статусе online.

Продвинутые практики и оптимизация

  • Кеширование: Настройте кеш (например, в S3) для зависимостей (node_modules, vendor). Это ускорит выполнение пайплайнов в разы.
  • Docker-in-Docker (dind): Для сборки Docker-образов внутри заданий потребуется специальная настройка раннера с сервисом docker:dind.
  • Безопасность: Для Project Runners используйте токены с ограниченным сроком действия. Ограничивайте теги, чтобы задания запускались только на нужных раннерах. Регулярно обновляйте софт.
  • Автоскейлинг: Используйте executor docker+machine или kubernetes для автоматического создания и уничтожения раннеров под нагрузкой.

FAQ: Часто задаваемые вопросы

Где взять registration token?

Для Shared Runner: Админ-панель GitLab -> Overview -> Runners. Для Group Runner: Страница группы -> Settings -> CI/CD -> Runners. Для Project Runner: Проект -> Settings -> CI/CD -> Runners.

Раннер в статусе «never contacted». Что делать?

Проверьте: 1) Служба gitlab-runner запущена. 2) Нет проблем с сетью и фаерволом между раннером и сервером GitLab. 3) В файле config.toml указан правильный URL.

Как запускать задания на определенных раннерах?

Используйте теги (tags). При регистрации задайте раннеру теги (напр., aws, large). В файле .gitlab-ci.yml в описании задания укажите: tags: - aws - large.

Можно ли использовать один раннер для нескольких проектов?

Да, если это Shared или Group Runner. Project Runner привязан к одному проекту, но его можно сделать доступным для других вручную в настройках.

Как обновить GitLab Runner?

Для Ubuntu/Debian: sudo apt-get update && sudo apt-get install gitlab-runner. Не забудьте перезапустить службу.