HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
d-shop
HimeraSearchDB

НОВОСТИ Настройка CI gitlab.com и VPS сервер

Bonnie
Оффлайн
Регистрация
12.04.17
Сообщения
19.095
Реакции
107
Репутация
0
aauuzlafmtgtjmfugdc_jteybqc.png

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

Предпосылки


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

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


  • Аккаунт
  • 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!





  • .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
_iejhidikhbhm3w_l0e4xsemnis.png


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


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


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

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

Подготовка VPS


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


gitlab-runner register

rpw6s99n9ch00_cqnozvzq-pz6k.png


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

nano /etc/gitlab-runner/config.toml

поле

volumes = ["/cache"]

меняем на

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


rm3_i7l5m6dwjg_v6xqru-y-inu.png


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

gitlab-runner restart


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

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

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


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


И напоследок открываем браузер
lrrritvtbqwunyntcunti9cd-ag.png


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


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

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



service docker restart
 
Сверху Снизу