пятница, 23 марта 2018 г.

01 - Холодный старт

Gitlab и его CI

Неделю бьюсь с Gitlab и его CI - слишком всё непривычное. Сегодня решил записать основные этапы сражений, может кому-то пригодится, да и самому полезно, а то забуду.
Для начала опишу по памяти, "как всё начиналось". Но сначала задача.

Задача

Организовать процесс тестирование проекта.
Проект состоит из нескольких частей: web, android, ios. В приоритете web, который на данный момент выглядит очень статически, а в перспективе к нему будет прикручен backend.

От текущего состояния к требуемому

Есть проект на nodejs, который разрабы как-то "компиляют" у себя и получают статический сайт, который по ftp выкатывают ручками на тестовый сервер.

Требуемый flow

  • Разрабы пушат в git в ветку master
  • Запускается сборка проекта (node install, кажется)
  • Получается статический сайт - директория с файлами
  • Директория заливается на стенд
  • Вызываются автотесты.
  • Результаты автотестов видны где-то в красивом виде.

С чего начать?

Начинать нужно с Ивана Немытченко, он даёт хорошее представление, что такое вообще gitlab CI. Как только придёт осознание, что "я всё понял", нужно принять холодный душ от Дмитрия Столярова - вот кто взрывает мозг и давит интеллектом!


После вкуривания видосов я пошёл на gitlab и попытался написать свой маленький ci-скрипт. Для этого в корне репозитория нужно создать файл .gitlab-ci.yml
Кстати, при создании этого файла из web-интерфейса, будет предоставлена возможность выбрать из набора готовых темплейтов:

Откровение первое

Об этом было в видео, но всё равно:
Все скрипты выполняются с помощью докер-контейнеров! Т.е. если вы напишете простое
script:
    - echo "Test"

то для выполнения этого скрипта будет спулен docker-контейнер (по умолчанию ruby, если вы не указали какой-нибудь другой image). Спулен, запущен и в нём уже выполнено echo.

Откровение второе

А как же наши исходники попадут в контейнер-то? Оказывается, кроме git pull будет вызвано
Cloning repository...
Cloning into '/builds/...

Я не нашёл где описано, что ваш репо будет скопирован в /builds, но уверен, что это где-то описано.



Комментариев нет:

Отправить комментарий