Thank you for reading this post, don't forget to subscribe!
Настройка GitLab-runner
GitLab Runner — это агент, который собственно и занимается выполнением инструкций из специального файла .gitlab-ci.yml.
В отличие от Jenkins раннеры гитлаба написаны на Go, поэтому они очень маленькие и быстрые. И умеют запускать задачи совершенно различными способами: локально, в докер-контейнерах, в различных облаках или через ssh-коннект к какому либо серверу.
Runner – это сервер, который проверяет код и автоматически запускает тестирование обновлений. Чтобы изолировать среду тестирования, все тесты следует запускать в контейнерах Docker.
Для этого нам нужно установить Docker на runner-сервер.
wget -qO- https://get.docker.com/ | sh
usermod -aG docker $(whoami)
systemctl enable docker
systemctl start docker
Далее следует установка gitlab-runner.
Для установки необходимо выполнить следующие команды:
# Linux x86-64
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash
yum install gitlab-runner
или
chmod +x /usr/local/bin/gitlab-runner
curl -sSL https://get.docker.com/ | sh
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner[/spoiler]
gitlab-runner start
Gitlab-runner установлен и готов к настройке обработчиков.
НО РЕКОМЕНДУЕМ установить multi-runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
yum install gitlab-ci-multi-runner
gitlab-ci-multi-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
gitlab-ci-multi-runner start
указание домашней директории обязательно, так как при сборке файлы будут создаваться в ней, и необходим доступ на чтение запись.
gitlab-ci-multi-runner status
gitlab-runner: Service is running!
После чего можно регистрировать новый runer
gitlab-ci-multi-runner register
если зарегистрирован мультиранер с таким же названием, как и был обычный ранер, рекомендуем удалить старый и перезапустить gitlab-ci-multi-runner
gitlab-ci-multi-runner restart
Создание GilLab-runner
Для создания GilLab-runner необходимо знать url gitlab-ci, и его токен.
Данную информацию можно увидеть в web-интерфейсе gitlab-администратора:
Admin area->Overview->Runners
Далее выполняем интерактивную команду:
gitlab-runner register
gitlab-runner register
# Теперь вводим адрес, на котором располагается хост Gitlab
Please enter the gitlab-ci coordinator URL (e.g. https://example.com )
https://example.com
# Далее токен раннера, который можно получить по https://example.com/admin/runners для shared раннеров, для каждого проекта можно настроить свой, токен можно найти в репозитории
Please enter the gitlab-ci token for this runner
xxx
# Далее вводим описание раннера (или хостнейм)
Please enter the gitlab-ci description for this runner
[hostame] kurlyk
# Теги
Please enter the gitlab-ci tags for this runner (comma separated):
green elephant, pakhom
# Надо ли GitLab выполнять не тегированные работы (например, можем захотеть чтобы выполнял с тегами rails)
Whether to run untagged jobs [true/false]:
[false]: true
# Привязать ли раннер к проекту?
Whether to lock Runner to current project [true/false]:
[true]: true
# Выбор executor (для Pages выберем docker, почему не docker с machine уже описывалось)
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
# Дефолтный Image если в .gitlab-ci.yml в репозитории не будет указан Image
Please enter the Docker image (eg. ruby:2.1):
alpine:latest
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.1.171/
Please enter the gitlab-ci token for this runner:
FyMR7FxzmodxqL*****# Ваш токен
Please enter the gitlab-ci description for this runner:
shell-ansible # любое описание
Please enter the gitlab-ci tags for this runner (comma separated):
shell-ansible # любой тег
Registering runner… succeeded runner=FyMR7Fxz
Please enter the executor: docker, shell, virtualbox, docker+machine, kubernetes, docker-ssh, parallels, ssh, docker-ssh+machine:
shell # любой необходимый Вам обработчик из пердложенных
Для деплоя проекта мы будем использовать ansible - предварительно устанавливаем его на runner-сервер.
У пользователя gitlab-runner должны быть следующие права:
uid=992(gitlab-runner) gid=988(gitlab-runner) groups=988(gitlab-runner),10(wheel),994(docker)
при работе раннера возможны проблемы при запуске контейнеров, так как у нас используется прокси то необходимо прописать её в файле:
~/.docker/config.json
в следующем виде:
[codesyntax lang="bash" container="none" strict="no"]
1 2 3 4 5 6 |
<span style="font-family: georgia, palatino, serif; font-size: 12pt;">"proxies": { "default": { "httpProxy": "http://IP:3128", "noProxy": "*.domain.ru" } }</span> |
[/codesyntax]