GitLab Runner
GitLab Runner — це додаток з відкритим вихідним кодом, який виконує завдання (такі як скрипти CI/CD) на основі визначених користувачем сценаріїв у файлі .gitlab-ci.yml. З його допомогою забезпечується автоматизація побудови, тестування та деплойменту додатків. Основні задачі включають:
- Автоматизацію процесу розробки: Виконання тестів, збірки, деплойменту та інших операцій.
- Паралельне виконання завдань: Розпаралелювання процесу, що зменшує час виконання CI/CD пайплайнів.
- Сумісність з різними середовищами: Виконання завдань на різних платформах, використовуючи різні екзек’ютори.
Інструкція з налаштування та запуску приватного GitLab Runner у Docker контейнері з shell екзек’ютором
Вимоги
- Встановлений Docker.
- Доступний GitLab сервер.
- Токен для реєстрації Runner'а (отримується через GitLab UI).
Кроки:
Завантажити Docker зображення GitLab Runner:
docker pull gitlab/gitlab-runner:latestЗапустити контейнер з GitLab Runner:
docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latestТут:
-dзапускає контейнер у бекграунді.--restart alwaysзабезпечує перезапуск контейнера у випадку його збою.-v /srv/gitlab-runner/config:/etc/gitlab-runnerмонтує локальну директорію для конфігурації Runner.-v /var/run/docker.sock:/var/run/docker.sockдозволяє контейнеру контролювати Docker хост.
Реєстрація Runner'а:
Увійдіть до контейнера:
docker exec -it gitlab-runner bashВ контейнері виконайте команду реєстрації:
gitlab-runner registerВам буде запропоновано ввести декілька параметрів:
- URL GitLab сервера: Введіть URL вашого GitLab інстансу, наприклад,
https://gitlab.com. - Реєстраційний токен: Введіть токен, який можна знайти у GitLab UI під налаштуваннями проєкту або групи (Settings -> CI/CD -> Runners).
- Опис Runner'а: Введіть описання, щоб легко ідентифікувати Runner, наприклад,
My Docker Runner. - Теги: Введіть теги, які дозволять специфікувати Runner для певних job'ів, наприклад,
docker,shell. - Екзек’ютор: Виберіть
shell.
В ідеалі реєстрація виглядає так:
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): https://gitlab.example.com Please enter the gitlab-ci token for this runner: your_token Please enter the gitlab-ci description for this runner: [hostname] my-docker-runner Please enter the gitlab-ci tags for this runner (comma separated): docker,shell Please enter the executor: docker-ssh, docker-ssh+machine, docker, parallels, shell, ssh, virtualbox, kube, custom, docker+machine, docker-windows: shell- URL GitLab сервера: Введіть URL вашого GitLab інстансу, наприклад,
Перевірка коректності роботи Runner'а:
Після успішної реєстрації, у веб-інтерфейсі GitLab, на сторінці налаштувань проєкту у розділі Runners, ви повинні побачити новий Runner зі статусом "online".
Налаштування для запуску задач:
Створіть файл
.gitlab-ci.ymlу кореневій директорії вашого проєкту з таким вмістом:
stages:
- build
- test
build_job:
stage: build
tags:
- shell
script:
- echo "Building the project..."
- # Ваші команди для збірки проекту
test_job:
stage: test
tags:
- shell
script:
- echo "Running tests..."
- # Ваші команди для тестування проекту
Пояснення важливих елементів .gitlab-ci.yml:
- stages: Список стадій пайплайну, через які проходить ваш проект.
- build_job: Назва роботи (job), яку необхідно виконати на стадії
build. - test_job: Назва роботи (job), яку необхідно виконати на стадії
test. - tags: Мітки для узгодження роботи з відповідним Runner'ом.
- script: Команди, які потрібно виконати у контексті відповідної роботи.
Запуск пайплайну
Коли ви збережете і запушите зміни з файлом .gitlab-ci.yml у репозиторій, GitLab автоматично запустить пайплайн, і GitLab Runner виконає визначені завдання.
Висновок
GitLab Runner є важливою складовою CI/CD екосистеми GitLab, що дозволяє автоматизувати процеси розробки, тестування та деплойменту. Використання Docker-контейнерів для запуску GitLab Runner забезпечує гнучкість, ізольованість та легкість в налаштуванні. Сподіваюсь, що ця лекція допоможе вам налаштувати та використовувати своє приватне CI/CD середовище ефективно.