Установка и использование GitLab Runner
GitLab Runner — это веб-приложение (агент), предназначенное для запуска и автоматического выполнения процессов CI/CD в GitLab. GitLab Runner выполняет задачи из файла .gitlab-ci.yml
, который располагается в корневой директории вашего проекта.
Runner можно установить как на одном сервере, где установлен GitLab, так и отдельно. Главное, чтобы между GitLab Runner и сервером GitLab было сетевое взаимодействие. Установить Runner можно на такие ОС, как Linux, Windows, macOS, также поддерживается запуск в контейнере Docker.
В данной статье мы установим GitLab Runner в Docker и запустим тестовый проект.
Предварительные требования
Для установки GitLab Runner необходимо следующее:
- Сервер или виртуальная машина с предустановленной ОС Linux. Использовать можно любой дистрибутив, на который можно установить Docker.
- Заранее установленный Docker.
- Учетная запись на сайте gitlab.com, а также заранее подготовленный проект.
Установка GitLab Runner с помощью Docker
Переходим на сервер где установлен Docker.
- Для начала создадим том Docker, в котором будет храниться конфигурация.
Том Docker представляет собой файловую систему для постоянного хранения информации. Данные в томе хранятся отдельно от контейнера. При перезапуске, остановке или удалении контейнера том и данные в нем останутся. Команда для создания тома с именем runner1:
docker volume create runner1
- Далее запускаем контейнер с образом
gitlab-runner
:
docker run -d --name gitlab-runner1 --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v runner1:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
- Проверяем статус контейнера и убеждаемся, что он запущен (статус Up):
docker ps
На этом установка GitLab Runner закончена. Следующий этап — регистрация Runner.
Регистрация GitLab Runner
После того как Runner был установлен, его необходимо зарегистрировать. Без регистрации Runner не сможет выполнять задачи.
- Регистрация выполняется при помощи запуска контейнера
gitlab-runner
и выполнения в нем командыregister
:
docker run --rm -it -v runner1:/etc/gitlab-runner gitlab/gitlab-runner:latest register
- На первом шаге нас попросят ввести URL, на котором располагается сервер GitLab:
Если вы используете self hosted GitLab (который установлен на отдельном сервере), то необходимо использовать адрес вашего экземпляра GitLab. Например, если ваш проект располагается по адресу https://gitlab.test1.com/projects/testproject
, то URL будет https://gitlab.test1.com
.
Если же ваши проекты хранятся на GitLab.com, то URL — https://gitlab.com
.
- Следующим шагом нас попросят ввести регистрационный токен:
Чтобы его получить, необходимо перейти в веб-интерфейс GitLab, выбрать нужный проект, слева выбрать раздел Settings, далее CI/CD:
Найти меню Runners, раскрыть раздел (Expand). Токен будет доступен в Action menu (кнопка с 3 точками):
- Далее нам предложат ввести описание для данного Runner. Пункт можно пропустить и ничего не писать:
- Далее необходимо задать тег(и). Теги — это метки, предназначенные для определения, какой именно раннер будет использоваться при запуске задач. Можно ввести более одного тега. В этом случае их необходимо разделить запятыми:
- На этапе ввода технической информации — maintenance note — можно задать информацию для других разработчиков, которая будет содержать, например, технические данные сервера. Можно ничего не писать и пропустить.
- Далее необходимо выбрать executor — среду, в которой будут запускаться pipeline. В качестве примера выберем
docker
. В этом случае pipeline будут запускаться в контейнерах Docker, а по завершению контейнеры будут удаляться.
- На последнем шаге необходимо выбрать образ Docker, который будет использоваться в контейнере, где будет запускаться pipeline. В качестве примера выберем образ
python 3.10-slim
:
После того как регистрация Runner завершена, он будет отображен в настройках проекта, в разделе Runners:
Использование GitLab Runner при запуске pipeline
Для того чтобы использовать Runner для запуска pipeline, необходимо создать файл с именем .gitlab-ci.yml
. Можно создать файл сразу в корневой директории проекта или в веб-интерфейсе GitLab — для этого на главной странице проекта необходимо нажать на кнопку Set up CI/CD (данная кнопка будет присутствовать только один раз — при первой настройке CI/CD):
Далее нажимаем на Configure pipeline:
При первой настройке pipeline, GitLab предоставляет базовый синтаксис pipeline. В нашем примере мы используем проект на Python, а именно скрипт для проверки скорости интернет-соединения. При успешном выполнение скрипта в выводе должны отображаться строки с входящим и исходящим соединением:
Your Download speed is 95.8 Mbit/s
Your Upload speed is 110.1 Mbit/s
Синтаксис pipeline будет выглядеть следующим образом:
image: python:3.10-slim
default:
tags:
- test1
before_script:
- pip3 install -r requirements.txt
run:
script:
- python3 check_internet_speed.py
Для того чтобы назначить ранее созданный Runner для данного проекта, необходимо прописать блок:
default:
tags:
- test1
В котором test1
— это тег нашего созданного Runner. Благодаря этому тегу, pipeline будет выполнен на том Runner, которому присвоен тег test1
. Сохраняем изменения в файле (делаем commit) и запускаем наш pipeline. Если посмотреть процесс выполнения job, то в самом начале вывода можно увидеть, что используется gitlab runner:
Полный вывод всего pipeline изображен на скриншоте ниже:
В итоге мы установили GitLab Runner, настроили его а также назначили его на проект и запустили pipeline на этом Runner.