- How to Install GitLab Runner on Ubuntu 20.04 LTS
- Step #1: Add the Official GitLab Repository
- Step #2: Install GitLab Runner on Ubuntu
- Step #3: Grant sudo Permission to GitLab Runner User
- Step #4: Register GitLab Runner to GitLab on Ubuntu
- Uninstall GitLab Runner from Ubuntu
- Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- Установка и регистрация Runner
- Установка
- Настройка репозитория
- Установка
- Регистрация
- Создание CI/CD для проекта
- Настройка Rsyncd
- Настройка на веб-серверах
How to Install GitLab Runner on Ubuntu 20.04 LTS
In this article we are going to cover How to Install GitLab Runner on Ubuntu 20.04 LTS / any other cloud platform like AWS EC2, Azure VM, Google Cloud with preinstalled Ubuntu 20.04 LTS.
Step #1: Add the Official GitLab Repository
First add the official GitLab Repository using below command, to check latest Gitlab Repository visit the official GitLab Runner page
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
Step #2: Install GitLab Runner on Ubuntu
Run below command to install latest GitLab Runner on Ubuntu 20.04 LTS
sudo apt-get install gitlab-runner
use below commands to install specific version of GitLab Runner on Ubuntu.
apt-cache madison gitlab-runner
sudo apt-get install gitlab-runner=10.0.0
Command to check GitLab Runner version
sudo gitlab-runner -version
Version: 13.4.1 Git revision: e95f89a0 Git branch: 13-4-stable GO version: go1.13.8 Built: 2020-09-25T20:03:43+0000 OS/Arch: linux/amd64
To check status if GitLab Runner service is running or not
Runtime platform arch=amd64 os=linux pid=29368 revision=e95f89a0 version=13.4.1 gitlab-runner: Service is running!
Commands to Start, Stop and Restart GitLab Runner
sudo gitlab-runner restart
Step #3: Grant sudo Permission to GitLab Runner User
After install GitLab Runner you will see gitlab-runner user in /home directory
To grant sudo permission to gitlab-runner user, ope the visudo file
Add the gitlab-runner user in sudoers group and set NOPASSWD as shown below
gitlab-runner ALL=(ALL:ALL) ALL
gitlab-runner ALL=(ALL) NOPASSWD: ALL
# Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL gitlab-runner ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d gitlab-runner ALL=(ALL) NOPASSWD: ALL
Step #4: Register GitLab Runner to GitLab on Ubuntu
1. First login to GitLab Server with Username and Password.
2. Click on your project and select Settings
3. Navigate to Settings and click on CI/CD inside this click on Expand of Runners section
4. Copy GitLab server URL and Registration Token as shown below.
5. Paste GitLab Server URL and Token in registration command as below
$ gitlab-runner register --name project-name-runner --url https://gitlab.fosstechnix.com --registration-token Uc7yzxTMzsXhXJx3zgM
sudo gitlab-runner register
if you want to register gitlab-runner with docker executor then use below command
sudo gitlab-runner register \ --non-interactive \ --url "GITLAB_SERVER_URL" \ --registration-token "REGISTRATION_TOKEN" \ --description "docker-runner" \ --executor "docker" \ --docker-image ubuntu:latest
6. Copy above command. Login to GitLab runner server through SSH and paste & run copied command on command line.
Follow the default options until which agent you need to register and then select agent as shown below
7. Once you registered Runner for project then you will get runner as below,
Successfully, We have performed GitLab Runner Registration.
Error: This job is stuck because the project doesn’t have any runners online assigned to it. Go to Runners page.
You have added tags while registering GitLab Runner however you have not added tags for your Job.
Follow below steps to add tags.
1. Navigate to Settings and click on CI/CD inside this click on Expand of Runners section
2. Go to Runners and check on Indicates whether this runner can pick jobs without tags Box
Uninstall GitLab Runner from Ubuntu
First remove the gitlab-runner using apt
sudo apt purge --autoremove -y gitlab-runner
Remove the gitlab-runner apt key
Remove gitlab-runner apt repository
sudo rm -rf /etc/apt/sources.list.d/runner_gitlab-runner.list
Remove the gitlab-runner user and directory
sudo deluser --remove-home gitlab-runner
Remove gitlab-runner installation directory
sudo rm -rf /etc/gitlab-runner
In this article, How to Install GitLab Runner on Ubuntu 20.04 and Register GitLab Runner to GitLab on Ubuntu.
Related Articles
Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
Обновлено: 19.10.2022 Опубликовано: 02.01.2021
Используемые термины: GitLab, CI/CD, веб-сервер, Linux. Runner в GitLab позволяют автоматизировать рутинные задачи при обновлении проектов в репозитории. В нашем примере мы рассмотрим ситуацию, когда у нас используется сервер GitLab для хранения проекта и 5 веб-серверов, куда должны попадать изменения после выполнения git push. Мы настроим наш CI/CD на синхронизацию файлов с помощью rsyncd. Предполагается, что у нас уже установлен GitLab на Linux, в противном случае, воспользуйтесь инструкцией для Ubuntu или CentOS. Нам потребуется выполнить:
Установка и регистрация Runner
Runner — это отдельное приложение, которое запускается для выполнения заданий CI/CD. Его можно установить на любой компьютер под управлением любой популярной операционной системы (Linux, Windows, BSD, Mac OS и так далее). Также доступны различные варианты установки — из репозитория, скачивание бинарника или запуск как приложения в Docker или кластере Kubernetes. Мы выполним установку из репозитория Linux на тот же сервер, где работает наш GitLab.
Установка
По умолчанию, Runner не устанавливается вместе с GitLab. Для его установки необходимо сначала настроить репозиторий — наши действия зависят от используемой системы.
Настройка репозитория
curl -L «https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh» | sudo bash
curl -L «https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh» | sudo bash
в) для систем, которые не поддерживаются GitLab, но которые основаны на базе поддерживаемых систем. Сначала загружаем скрипт:
Установка
После настройки репозитория, выполняем установку. Команда также зависит от типа операционной системы. а) для Debian / Ubuntu (системы на основе deb-пакетов):
Регистрация
Для корректной работы Runner его нужно связать с нашим проектом в GitLab. Для этого сначала заходим на портал последнего — переходим на страницу проекта — в меню слева выбираем Settings — CI / CD: Находим раздел Runners: Справа от названия кликаем по Expand: Находим параметры для регистрации нового раннера: . и оставляем страницу открытой — она понадобиться на следующем шаге. В командной строке нашего сервера GitLab вводим:
* установить и запустить Runner можно не только на локальном сервере GitLab, но мы рассмотрим только данный способ. Система в интерактивном режиме запросит данные для регистрации — вводим их:
Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.dmosk.ru/
Enter the registration token:
zX_Kvkxk7ywrgwYHsod5
Enter a description for the runner:
[git-server.dmoks.ru]: DMOSK Metrics API
Enter tags for the runner (comma-separated):
dmosk, metrics, api
Registering runner. succeeded runner=zX_Kvkxk
Enter an executor: parallels, virtualbox, docker+machine, docker-ssh+machine, kubernetes, custom, docker, docker-ssh, shell, ssh:
shell
- https://gitlab.dmosk.ru/ — адрес нашего сервера GitLab. Его можно увидеть на странице с параметрами, которую мы оставили открытой на предыдущем шаге. В моем случае, на данной странице ссылка была типа http, однако, при регистрации Runner мы ее должны поменять на https (если наш сервер использует его).
- zX_Kvkxk7ywrgwYHsod5 — токен для регистрации раннера. Его смотрим на странице с параметрами, которые мы открывали выше.
- DMOSK Metrics API — произвольное описание для нашего раннера.
- dmosk, metrics, api — теги. Рекомендуется максимально точно описывать раннер тегами. С их помощью можно указывать, на каких раннерах должны выполняться те или иные задачи.
- shell — выбираем исполнителя из предложенных вариантов. В нашем случае это просто командный интерпретатор.
В конце мы должны увидеть:
Runner registered successfully. Feel free to start it, but if it’s running already the config should be automatically reloaded!
* если мы получим ошибку «status couldn execute post against certificate signed by unknown authority», переходим к решению ниже.
Обновим страницу с параметрами для регистрации раннера — ниже мы должны увидеть, что у нас появился один новый элемент. Кликаем по изображению редактирования справа от токена:
Выставляем следующие галочки для настройки Runner:
- Paused Runners don’t accept new jobs — если наш обработчик заданий приостановлен, он не принимает новые задания.
- This runner will only run on pipelines triggered on protected branches — Runner должен запускаться только на защищенных ветках.
- Indicates whether this runner can pick jobs without tags — раннер может запускать задания без тегов. В данном примере для первого знакомства с CI/CD мы поставим галочку, но лучше этого не делать, а управлять заданиями с помощью тегов.
- When a runner is locked, it cannot be assigned to other projects — если обработчик заблокирован, его нельзя назначать для других проектов.
В нашем примере мы рассмотрели регистрацию персонального раннера для проекта. В GitLab также предусмотрена созможность регистрации общего runner, к которому можно привязывать проекты. Сама регистрация выполняется по такому же принципу и не должна вызвать проблем. В GitLab для этого переходим в Menu — Admin — Runners.
И так, обработчик зарегистрирован и настроен. Переходим к созданию CI/CD.
Создание CI/CD для проекта
На первоначальном этапе, мы создадим простой сценарий, который просто будет выводить путь до каталога на сервере, в котором находится проект.
Переходим в GitLab на страницу проекта и кликаем по Set up CI/CD:
* данной кнопки может и не быть.
. или можно просто в корне проекта создать файл:
Задаем содержимое нашего сценария:
test:
stage: test
script: echo $CI_PROJECT_DIR/
* Формат текста должен быть yml, а значит, отступы имеют значение.
** В данном примере мы создаем pipeline с одним единственным этапом, которое называется test. По данному заданию будет запускаться скрипт вывода значения переменной $CI_PROJECT_DIR — путь, по которому клонируется проект и где выполняется задание (если установлен $builds_dir, эта переменная устанавливается относительно данного значения). Также обратите внимание на директиву default с указанием на использование тегов (tags) — для всех заданий мы определили тег по умолчанию, который может контролировать, на каких раннерах должно быть запущено задание.
*** Список возможных переменных можно посмотреть на официальном сайте в разделе документации GitLab CI/CD environment variables.
**** Боллее подробная шпаргалка по работе с Gitlab CI/CD представлена в инструкции Шпаргалка по написанию Gitlab Pipelines.
После сохранения файла ждем несколько секунд и перезапускаем страницу — мы должны увидеть успешный результат выполнения сценария CI/CD:
Кликнем по значку зеленой галочки и в открывшейся странице кликаем по нашей единственной стадии:
Мы должны увидеть ход процесса выполнения задания и результат его работы:
На этой же странице справа можно вручную запустить задание еще раз:
CI/CD создан. Теперь необходимо подготовить систему к синхронизации данных.
Настройка Rsyncd
Наша синхронизация будет выполняться с помощью Rsyncd. Это удобный инструмент, с помощью которого можно поддерживать актуальное состояние двух и более каталогов. Также у нас не возникнет проблем с правами — rsync после копирования будет задавать файлам нужного владельца и нам не нужно будет выдавать права root для runner с помощью файла sudoerst. Подробнее об установке и настройке Rsyncd.
Настройки нужно выполнить как на веб-серверах, так и сервере с GitLab.
Настройка на веб-серверах
Данные действия нужно выполнить на каждом веб-сервере. Мы должны установить и настроить в качестве сервиса rsyncd. Сначала установим его. В зависимости от типа Linux, наши действия будут различаться.
а) Ubuntu / Debian: