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 необходимо следующее:
Переходим на сервер где установлен 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
docker ps
На этом установка GitLab Runner закончена. Следующий этап — регистрация Runner.
После того как Runner был установлен, его необходимо зарегистрировать. Без регистрации Runner не сможет выполнять задачи.
gitlab-runner
и выполнения в нем команды register
:docker run --rm -it -v runner1:/etc/gitlab-runner gitlab/gitlab-runner:latest register
Если вы используете 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 точками):
docker
. В этом случае pipeline будут запускаться в контейнерах Docker, а по завершению контейнеры будут удаляться. python 3.10-slim
:После того как регистрация Runner завершена, он будет отображен в настройках проекта, в разделе Runners:
Для того чтобы использовать 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.
Разверните GitLab на наших облачных серверах
Всё прекрасно, спору нет. Вот спасибо за совет. Но ужаснее, что полдня, нет коннекта у меня:
В чем причина не пойму. Потерял я времени целую уйму. А исходные данные таковы: имеем 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. Далее всё по вашей статье сделано. И в целом работает:
Добился, прописав в конфигах
daemon.json
, чтобы порт был открыт 2375. Иnetstat
подтверждает, что слушает:И никак не получается подключиться (((
Здравствуйте! Похоже, что проблема возникает именно с WSL. Мы не затрагивали этот вариант настройки в инструкции, поэтому сложно подсказать.
Можно попробовать пройтись по инструкции на официальном сайте Докера: https://docs.docker.com/desktop/wsl/
Либо же повторить настройку по нашему гайду, но с запуском именно на сервере или виртуальной машине.