Skip to content

fidals/shopelectro

Repository files navigation

Build Status PDD status

Shopelectro site documentation

Репозиторий интернет-магазина shopelectro. Разрабатываем по методологии PDD.

Команда

Линк на роли в команде разработки сайта.

Разворачиваем проект

Инструкции для быстрой развёртки проекта для разработки. Подробности смотрите в Makefile и в drone.yml.

Инструкция работает только для Линукса. Под Виндой нужна виртуалка. Как настроить виртуалку под Виндой.

Для сокращения введём такие алиасы::

bash alias dc="docker-compose"
bash alias dcp="docker-compose -f docker-compose-production.yml"

Для разработки

Готовим код к работе

# clone repositories
git clone git@github.com:fidals/refarm-site.git
git clone git@github.com:fidals/shopelectro.git
cd shopelectro/docker/
# this command will ask you to fill some files.
# See this instruction below to get out how to do it.
make deploy-dev

# optional
dc exec app python manage.py excel
dc exec app python manage.py price

Файлы env

make deploy-dev создаст файлы для окружения (env) со стандартными значениями. А затем попросит заполнить их.

Пару рекомендаций по заполнению:

  • Генерим случайные: Django secret key, пароли к локальным базам
  • В файлах shopelectro/docker/env_files/paths и shopelectro/docker/.env определяем путь REFARM_DIR=../../refarm-site (или другой путь куда вы сделали git clone репозитория refarm-site). Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта нужно поправить код refarm-site вместе с кодом сайта.
  • Запрашиваем у Архитектора: Пароль к FTP и почтовому серву

Проверяем адрес http://127.0.0.1:8010 - загружается сайт. Вместо порта 8010 может быть другой - переменная окружения (env var) VIRTUAL_HOST_EXPOSE_PORT.

Makefile

docker/Makefile - единственная и полная инструкция для работы с локальным dev-окружением. Содержит все скрипты, которые мы используем для разработки. Например: подготовка среды, запуск тестов, внутренних команд приложения.

Запускаем тесты

# запускаем все тесты.
make test

# запускаем один тест
dc exec app python manage.py test shopelectro.tests.tests_selenium.TestClass.test_method

Fixtures

Некоторые тесты используют fixtures. Это заранее подготовленные данные из базы. Подробнее о фикстурах в документации Django.

Наши фикстуры лежат в папке shopelectro/fixtures Файл shopelectro/fixtures/dump.json сгенерирован специально для тестов. Если вам нужно добавить данных в тесты, пересоздайте этот файл с новыми данными и закоммитьте. Для пересоздания фикстур используйте команду shopelectro/management/commands/test_db.py Файл dump.json в контроле версий всегда должен соответстовать коду команды test_db.

Админка

Адрес: /admin/

Логин/пароль: admin/asdfjkl;

Для деплоя

Этот раздел полезен только Архитекторам. Деплой на сервер делаем руками.

make deploy

Бекапы

Создаем бекап

Запускаем специальный контейнер - se-backup-data:

cd <proj root>/docker
make backup

В результате работы контейнер создаст несколько архивов в хост-системе:

  • /opt/backups/shopelectro/database.tar.gz - дамп базы данных
  • /opt/backups/shopelectro/media.tar.gz - дамп медиафайлов
  • /opt/backups/shopelectro/static.tar.gz - дамп статики

Применяем бекап

Для восстановления базы данных и медиафайлов достаточно запустить make restore. Скрипт скачает последний бекап с сервера и разместит файлы в продакшен-папках. Для доступа к бэкап-серверу используются public+private ключи.

  • /opt/database/shopelectro - база данных, используется как volume контейнера se-postgres
  • /opt/media/shopelectro - медиафайлы, используется как volume контейнера se-python
  • /opt/static/shopelectro - статика, не подключается как volume, нужно скопировать вручную в директорию с статикой

N.B.: Некоторые данные (например, медиафайлы) могут иметь большой размер. На момент написания этой заметки, архив с медиафайлами Shopelectro весил ~4GB.

Архитектура

Continuous integration

Выполняет две задачи:

  • Проверка. Тестит систему для каждого pull request'a, запускает линтеры для кода.
  • Сборка. Собирает систему для dev и prod после каждого пуша в мастер-ветку.

Как устроен CI внутри.

Фичи

https://github.com/fidals/refarm-site/blob/master/pages/README.md

Новый год

  • Как добавляли - #224
  • Как удаляли - #278

Товары без картинок

Есть отдельная ссылка на товары без картинок для удобства

Оптовые цены

Убрали их с интерфейса в этой задаче. Есть небольшая вероятность, что вернём. #801