
В данной статье, я решил описать свой опыт настройки gitlab CI и арендуемого VPS.
Предпосылки
На работе, ув. DevOps’ы настроили мне деплой проектов в kubernetes (работаю я Go-разработчиком). У меня есть свой пет-проект — и мне захотелось автоматизации, но поднимать у себя gitlab желания особого не было (VPS не резиновый все таки).
Исходные данные
- Аккаунт https://gitlab.com/
- VPS сервер с Ubuntu 18.04
Создание репозитория
Создаем репозиторий, который хотим автоматизировать.
Я решил для тестов, поднять docker с nginx и пробросом на html страницу.
Структура репозитория:
-
Dockerfile
FROM nginx:latest COPY html /var/www/html COPY nginx.conf /etc/nginx/nginx.conf -
nginx.conf
events {} http { server { listen 80; location / { root /var/www/html; } } } - html
-
index.html
<html> <h1>Hello, Runner!</h1> </html>
-
-
.gitlab-ci.yml
image: docker:19.03.8 before_script: - docker info build: stage: build script: - docker build -t hellorunner . deploy: stage: deploy script: - docker ps --filter name=hellorunner --quiet | xargs --no-run-if-empty docker stop | xargs --no-run-if-empty docker rm - docker run -d --restart=always --name hellorunner -p 8090:80 hellorunner after_script: - docker system prune -f
Настройка репозитория
Открываем settings -> CI

Затем у пункта Runners нажимаем expand

Первым делом выключаем предложенные runners — Disable shared runners

Затем, нас интересует — «Set up a specific Runner manually»

Копируем токен, в будущем он нам понадобится.
Подготовка VPS
Устанавливаем docker.
Устанавливаем gitlab-runner.
Регистрируем новый runner.
! В поле executor указываем docker версии, как и в Dockerfile!
В поле token указываем токен, который запомнили из gitlab
gitlab-runner register

Теперь, нужно внести небольшие правки в конфиг runner’а.
nano /etc/gitlab-runner/config.toml
поле
volumes = ["/cache"]
меняем на
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]

Выполняем рестарт демона
gitlab-runner restart
Снова возвращаемся к gitlab/settings/CI/Runners.
Должен появиться активный runner

Редактируем runner, нажатием

Разрешаем выполнять задачи без тэгов

Теперь выполняем push коммита и следим за job’ами

И напоследок открываем браузер

P.S.: Я встретил проблему — у меня собранный образ изнутри не имел доступа к внешней сети, решение — создать файл/etc/docker/daemon.json:
{ "dns": ["8.8.4.4", "8.8.8.8"] }
service docker restart
ссылка на оригинал статьи https://habr.com/ru/post/499232/
Добавить комментарий