В мире современной разработки скорость и надежность доставки кода — это не просто преимущество, а необходимость. 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 это можно сделать через официальный репозиторий:
- Добавьте репозиторий GitLab:
curl -L \"https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh\" | sudo bash - Установите пакет:
sudo apt-get install gitlab-runner
Для других систем (Windows, macOS, Docker) инструкции есть на официальном сайте.
Шаг 2: Регистрация раннера
Это ключевой этап «знакомства» раннера с вашим сервером GitLab. Вам понадобятся два значения из интерфейса GitLab:
- URL вашего GitLab-сервера (например,
https://gitlab.com). - 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. Не забудьте перезапустить службу.