- Регистрация
- 12.04.17
- Сообщения
- 19.095
- Реакции
- 107
- Репутация
- 0

В данной статье, я решил описать свой опыт настройки
You must be registered for see links
CI и арендуемого VPS.Предпосылки
На работе, ув. DevOps'ы настроили мне деплой проектов в kubernetes (
Исходные данные
- Аккаунт
You must be registered for see links
- 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
Hello, Runner!
- index.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
Устанавливаем
You must be registered for see links
Устанавливаем
You must be registered for see links
Регистрируем новый 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'ами

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

Ссылка на репозиторий
You must be registered for see links
п.с. Я встретил проблему — у меня собранный образ изнутри не имел доступа к внешней сети, решение:
Создать файл/etc/docker/daemon.json
{
"dns": ["8.8.4.4", "8.8.8.8"]
}
service docker restart