Выполняет две задачи:
- Проверка. Тестит систему для каждого pull request'a, запускает линтеры для кода.
- Сборка. Собирает систему для dev и prod после каждого пуша в мастер-ветку.
CI делаем через drone. Синтаксис его конфига - надмножество конфигов docker-compose.
- При pull request сначала билдим контейнеры, потом запускаем на них тесты и линтеры.
- При push в мастер-ветку тоже билдим контейнеры, запускаем тесты. В финале пушим вновь созданные образы (docker images) в репозиторий. Docker compose фетчит эти образы на локальную машину когда мы начинаем разработку (или деплой на прод). Мы лишь следуем инструкциям из Makefile.
Образ питон-приложения для продакшена переиспользует образ для разработки. Поэтому запускаем только один набор тестов для образа разработки.
Для интеграционных тестов фронтенда нужна собранная фронт-статика: css, js, images. Поэтому билдим npm