Pull to refresh

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

Reading time2 min
Views9.5K
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
Tags:
Hubs:
0
Comments4

Articles