Опыт установки GitLab + Runners

Пока на время у меня появилось пару серверов для экспериментов, я попробовал установить GitLab EE, GitLab Runner и настроить CI через него.

для тех, кто в танке: GitLab Runner это сервисы, которые ставятся отдельно и подключаются к гитлабу. Они служат для сборки — пайплайны сборки выполняются именно внутри раннеров, которые могут быть установлены на различных мощных серверах или, например, на спотовых инстансах AWS (отличное применение спотовых, кстати)

В DevOps я, как разработчик, глубоко пока не погружался, но установить всё оказалось предельно просто.

Обзор установки

Чтобы установить гитлаб, просто следуем инструкции в несколько шагов на официальном сайте для вашей системы: https://about.gitlab.com/install/ помимо рекомендуемой установки через Omnibus package, коей я и следовал, есть множество других вариантов: установка в облаке, на кубер, через докер и др.

Затем нам нужны раннеры. Их советуют устанавливать на серверах, отличных от сервера самого гитлаба — видимо, чтобы нагрузка на них не тормозила gitlab. Они устанавливаются тоже легко по официальной инструкции.

Там есть несколько вариантов, я использовал самый простой. После установки раннер нужно зарегистрировать в нашем только что установленном гитлабе (токен для регистрации получаем в админке гитлаба по адресу http://you-gitlab-domain/admin/runners, а теги для начала можно вообще не назначать, а то не запустится, если просто написать наобум).

Всё готово! Можем создать простенький проект (например, вообще из темплейтов, которые доступны в гитлабе), добавить туда для проверки .gitlab-ci.yml, например для спринг темплейта:

image: java:8

stages:
  - build

before_script:
  - echo "--- Hello from Gitlab Runner! ---" && echo "Hostname of this runner " && hostname
  - chmod +x mvnw

build:
  stage: build
  script: ./mvnw -q -B package
  artifacts:
    paths:
      - target/demo-0.0.1-SNAPSHOT.jar

перейти в раздел CI/CD и наслаждаться выполнением темлейта в нашем раннере! В логах темплейта мы видим имя хоста раннера в выводе команды hostname, прописанной в before_script

Итог

Получилось всё легко, за пару часов. Конечно, возникло пару проблем, но они легко нагуглились и решились.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *