Временно у меня появилось пару серверов для экспериментов. Самое время попробовать установить 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
Итог
Получилось всё легко, за пару часов. Конечно, возникло пару проблем, но они легко нагуглились и решились.