gitlab – огляд та встановлення gitlab-runner на amazonlinux

Опис

GitLab Runner – аплікейшен, який працює з GitLab CI/CD для виконання завдань. Це дозволяє запускати CI/CD процеси на різних серверах, в цілях продуктивності та безпеки. Ранер можна розгорнути як в Kubernetes так і на звичайному сервері. Доступний для наступних операційних систем:

  • GNU/Linux
  • macOS
  • FreeBSD
  • Windows

Варіації встановлення:

  • Запустити в docker контейнері або описати в docker-compose.
  • Розгорнути в kubernetes.
  • Завантажити бінарний файл.
  • Використовувати репозиторій rpm/deb пакети.

Наразі коротко розглянемо які типи ранерів бувають:

Типи ранерів:

  • Shared – загальні, доступні для кожного.
  • Group – тільки для груп проектів, тобто раннери доступний всім проектас в групі
  • Specific – спеціальний, як варіант можна такий додати для певного проекту в якому є чуттєві данні або великонавантаженого.

Вся різниця при підключенні тільки в токенах. Для того, щоб зробити ранет одного з типів потрібен певний тип токена, нижче розглянемо всі варіанти.

Інсталяція

В цьому випадку оберемо встановлення з репозиторію, додаємо репозиторій:

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash

Встановлюємо:

sudo yum install gitlab-runner

Shared Runner

Для підключення Shared runner потрібно перейти в Menu > Admin > Overview > Runners, натиснути Register an instance runner, скопіювати токен й використати його під час реєстрації:

Group Runner

Обрати GitLab > Groups > Group Name > CI/CD > Runners, натиснути Register an instance runner, скопіювати токен:

Special Runner

Обираємо  Projects > PROJECT_NAME > Settings > Ci/CD > Runners, в полі Specific runners скопіювати токен:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

де:

  • specific runnersінформація і токен про те як підключити ранер
  • avaliable specific runnersсписок доступних спеціальних ранерів

Після того як визначилися який ранер нам потрібен, переходимо до реєстрації.

Для реєстрації ранера додаємо токен в наступну команду(ключі можна змінювати в залежності ваших потреб):

gitlab-runner register \
  --non-interactive \
  --url "https://example.com" \
  --registration-token "9**********" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "test-runner" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "AWS" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected" \
  --machine-max-growth-rate "10"

де:

  • –non-interactiveне інтерактивне підлючення
  • –urlвказуємо посилання на сервер gitlab
  • –registration-tokenтой самий токен про який згадувалося вище
  • –executorщо буде основою для виконання команд (shell, docker, kubernetes, etc) 
  • –docker-imageдокер образ який буде використовувати ранер
  • –description тут можна описати для кого або для яких цілей даний ранер
  • –maintenance-noteбудь які інформація про даний ранер
  • –tag-listскисок тегів за допомогою яких будуть запускатися завдання
  • –run-untagged=true даний параметр дозволяє запускати завдання без тегів
  • –locked=”false”
  • –access-level=”non_protected”
  • –machine-max-growth-rate “10” – максимальна кількісь одночасних завдань яке може працювати

отримали наступний вивід після запуску команди:

Runtime platform                                    arch=amd64 os=linux pid=15777 revision=43b2dc3d version=15.4.0
Running in system-mode.

Registering runner... succeeded                     runner=9FGLU9jL
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

Перевіряємо доданий ранер в gitlab:

Як бачимо додали саме шаред ранер, який буде загальний для всіх. Тепер створимо просте завдання та запустимо його з проекту.

Створимо в проекті файл gitlab-ci.yml з простим пайплайном:

default:
  image: centos:latest

test-job:
  stage: test
  script:
   - echo "Hello frob GitLab Runner"
  when: manual
  tags:
    - test-runner

запустимо його CI/CD > Pipelines > Run pipeline й переглядаємо вивід:

Running with gitlab-runner 15.4.0 (43b2dc3d)
  on test runner H4LyxFS8
Resolving secrets
00:00
Preparing the "docker" executor
Using Docker executor with image centos:latest ...
Pulling docker image centos:latest ...
Using docker image sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6 for centos:latest with digest centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 ...
Preparing environment
Running on runner-h4lyxfs8-project-376-concurrent-0 via test-server-1a...
Getting source from Git repository
00:02
Fetching changes with git depth set to 20...
Initialized empty Git repository in /builds/******/test-project-for-gitlabrunner/.git/
Created fresh repository.
Checking out a6a2958a as main...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:01
Using docker image sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6 for centos:latest with digest centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 ...
$ echo "Hello frob GitLab Runner"
Hello frob GitLab Runner
Cleaning up project directory and file based variables
00:01
Job succeeded

Далі все елементарно, розібратися з пайплайнами та побудовою повноцінної CI/CD)

Посилання на тему:

Click to rate this post!
[Total: 1 Average: 5]