Настройка CI gitlab.com и VPS сервер

от автора

image
В данной статье, я решил описать свой опыт настройки gitlab CI и арендуемого VPS.

Предпосылки

На работе, ув. DevOps’ы настроили мне деплой проектов в kubernetes (работаю я Go-разработчиком). У меня есть свой пет-проект — и мне захотелось автоматизации, но поднимать у себя gitlab желания особого не было (VPS не резиновый все таки).

Исходные данные

Создание репозитория

Создаем репозиторий, который хотим автоматизировать.

Я решил для тестов, поднять 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

image

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

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

image

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

image

Копируем токен, в будущем он нам понадобится.

Подготовка VPS

Устанавливаем docker.

Устанавливаем gitlab-runner.

Регистрируем новый runner.

! В поле executor указываем docker версии, как и в Dockerfile!
В поле token указываем токен, который запомнили из gitlab

gitlab-runner register

image

Теперь, нужно внести небольшие правки в конфиг runner’а.

nano /etc/gitlab-runner/config.toml

поле

volumes = ["/cache"] 

меняем на

volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] 

image

Выполняем рестарт демона

gitlab-runner restart

Снова возвращаемся к gitlab/settings/CI/Runners.

Должен появиться активный runner

image

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

image

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

image

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

image

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

image

Ссылка на репозиторий

P.S.: Я встретил проблему — у меня собранный образ изнутри не имел доступа к внешней сети, решение — создать файл/etc/docker/daemon.json:

{     "dns": ["8.8.4.4", "8.8.8.8"] } 

 service docker restart 

ссылка на оригинал статьи https://habr.com/ru/post/499232/


Комментарии

Добавить комментарий

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