Бесплатная миграция IT-инфраструктуры в облако

Установка и использование GitLab Runner

Александр Бархатов
Александр Бархатов
Технический писатель
01 ноября 2023 г.
11711
5 минут чтения
Средний рейтинг статьи: 3.5

GitLab Runner — это веб-приложение (агент), предназначенное для запуска и автоматического выполнения процессов CI/CD в GitLab. GitLab Runner выполняет задачи из файла .gitlab-ci.yml, который располагается в корневой директории вашего проекта. 

Runner можно установить как на одном сервере, где установлен GitLab, так и отдельно. Главное, чтобы между GitLab Runner и сервером GitLab было сетевое взаимодействие. Установить Runner можно на такие ОС, как Linux, Windows, macOS, также поддерживается запуск в контейнере Docker. 

В данной статье мы установим GitLab Runner в Docker и запустим тестовый проект.

cloud

Предварительные требования

Для установки GitLab Runner необходимо следующее:

  • Сервер или виртуальная машина с предустановленной ОС Linux. Использовать можно любой дистрибутив, на который можно установить Docker.
  • Заранее установленный Docker.
  • Учетная запись на сайте gitlab.com, а также заранее подготовленный проект.

Установка GitLab Runner с помощью Docker

Переходим на сервер где установлен Docker. 

  1. Для начала создадим том Docker, в котором будет храниться конфигурация.

Том Docker представляет собой файловую систему для постоянного хранения информации. Данные в томе хранятся отдельно от контейнера. При перезапуске, остановке или удалении контейнера том и данные в нем останутся. Команда для создания тома с именем runner1:

docker volume create runner1

Image6

  1. Далее запускаем контейнер с образом 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

Image16

  1. Проверяем статус контейнера и убеждаемся, что он запущен (статус Up):
docker ps

Image10

На этом установка GitLab Runner закончена. Следующий этап — регистрация Runner.

Регистрация GitLab Runner

После того как Runner был установлен, его необходимо зарегистрировать. Без регистрации Runner не сможет выполнять задачи.

  1. Регистрация выполняется при помощи запуска контейнера gitlab-runner и выполнения в нем команды register:
docker run --rm -it -v runner1:/etc/gitlab-runner gitlab/gitlab-runner:latest register
  1. На первом шаге нас попросят ввести URL, на котором располагается сервер GitLab:

Image14

Если вы используете self hosted GitLab (который установлен на отдельном сервере), то необходимо использовать адрес вашего экземпляра GitLab. Например, если ваш проект располагается по адресу https://gitlab.test1.com/projects/testproject, то URL будет https://gitlab.test1.com.

Если же ваши проекты хранятся на GitLab.com, то URL — https://gitlab.com.

  1. Следующим шагом нас попросят ввести регистрационный токен:

Image12

Чтобы его получить, необходимо перейти в веб-интерфейс GitLab, выбрать нужный проект, слева выбрать раздел Settings, далее CI/CD:

Image4

Найти меню Runners, раскрыть раздел (Expand). Токен будет доступен в Action menu (кнопка с 3 точками):

Image9

  1. Далее нам предложат ввести описание для данного Runner. Пункт можно пропустить и ничего не писать:

Image3

  1. Далее необходимо задать тег(и). Теги — это метки, предназначенные для определения, какой именно раннер будет использоваться при запуске задач. Можно ввести более одного тега. В этом случае их необходимо разделить запятыми:

Image11

  1. На этапе ввода технической информации — maintenance note — можно задать информацию для других разработчиков, которая будет содержать, например, технические данные сервера. Можно ничего не писать и пропустить.

Image2

  1. Далее необходимо выбрать executor — среду, в которой будут запускаться pipeline. В качестве примера выберем docker. В этом случае pipeline будут запускаться в контейнерах Docker, а по завершению контейнеры будут удаляться. 

Image5

  1. На последнем шаге необходимо выбрать образ Docker, который будет использоваться в контейнере, где будет запускаться pipeline. В качестве примера выберем образ python 3.10-slim:

Image17

После того как регистрация Runner завершена, он будет отображен в настройках проекта, в разделе Runners:

Image7

Использование GitLab Runner при запуске pipeline

Для того чтобы использовать Runner для запуска pipeline, необходимо создать файл с именем .gitlab-ci.yml. Можно создать файл сразу в корневой директории проекта или в веб-интерфейсе GitLab — для этого на главной странице проекта необходимо нажать на кнопку Set up CI/CD (данная кнопка будет присутствовать только один раз — при первой настройке CI/CD):

Image1

Далее нажимаем на Configure pipeline:

Image8

При первой настройке 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:

Image13

Полный вывод всего pipeline изображен на скриншоте ниже:

Image15

В итоге мы установили GitLab Runner, настроили его а также назначили его на проект и запустили pipeline на этом Runner. 

Разверните GitLab на наших облачных серверах
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
01 ноября 2023 г.
11711
5 минут чтения
Средний рейтинг статьи: 3.5
Комментарии 2
Станислав Лукьянов
Станислав Лукьянов
22.06.2024, 17:46

Всё прекрасно, спору нет. Вот спасибо за совет. Но ужаснее, что полдня, нет коннекта у меня:

$ docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} .
Cannot connect to the Docker daemon at tcp://0.0.0.0:2375. Is the docker daemon running?
time="2024-06-22T18:42:39Z" level=error msg="failed to dial gRPC: cannot connect to the Docker daemon. Is 'docker daemon' running on this host?: dial tcp 0.0.0.0:2375: connect: connection refused"

В чем причина не пойму. Потерял я времени целую уйму. А исходные данные таковы: имеем Windows 10, WSL2, Docker-Desktop последней версии:

Версия WSL: 2.2.4.0

Версия ядра: 5.15.153.1-2

Версия WSLg: 1.0.61

Версия MSRDC: 1.2.5326

Версия Direct3D: 1.611.1-81528511

Версия DXCore: 10.0.26091.1-240325-1447.ge-release

Версия Windows: 10.0.19045.2846

Развёрнута Ubuntu 24.04. Далее всё по вашей статье сделано. И в целом работает:

$ python manage.py test
Creating test database for alias 'default'...
...
Ran 3 tests in 0.009s
OK
Destroying test database for alias 'default'...
System check identified no issues (0 silenced).
Cleaning up project directory and file based variables 00:01
Job succeeded

Добился, прописав в конфигах daemon.json, чтобы порт был открыт 2375. И netstat подтверждает, что слушает:

CMD: netstat -a
TCP [::]:2375 KrishnaLoca:0 LISTENING
TCP 0.0.0.0:2375 KrishnaLoca:0 LISTENING

И никак не получается подключиться (((

Команда Timeweb Cloud
Команда Timeweb Cloud
01.07.2024, 08:14

Здравствуйте! Похоже, что проблема возникает именно с WSL. Мы не затрагивали этот вариант настройки в инструкции, поэтому сложно подсказать.

Можно попробовать пройтись по инструкции на официальном сайте Докера: https://docs.docker.com/desktop/wsl/

Либо же повторить настройку по нашему гайду, но с запуском именно на сервере или виртуальной машине.