shopelectro.ru site's code
Clone or download
Permalink
Failed to load latest commit information.
.github Create pull_request_template.md Jun 18, 2018
assets #269 Refactor deploy system (#280) May 16, 2018
doc #fix  Actualize feature's docs (#516) Aug 15, 2018
docker #fix Load more button had been failed (#623) Nov 1, 2018
etc #603 Create timeouts for cache warmup (#616) Oct 24, 2018
front #609 Apply new year styles (#613) Oct 23, 2018
media Fix url for robots.txt. Fix a slug for robots.txt. (#411) Jul 10, 2018
shopelectro #630 Move an order phone in favor of shop phone. (#632) Nov 7, 2018
templates #630 Move an order phone in favor of shop phone. (#632) Nov 7, 2018
.0pdd.yml #158 use coala (#159) Aug 16, 2017
.coafile #550 Split TaggedCategoryPage class (#551) Sep 7, 2018
.dockerignore - Fix docker build CI (#346) Jun 15, 2018
.drone.yml #fix Load more button had been failed (#623) Nov 1, 2018
.editorconfig rf#112 Add .editorconfig (#369) Jun 20, 2018
.eslintrc [831] Responsive layout (#111) Feb 21, 2017
.gitignore #398  Create problem for tags in different groups (#519) Aug 17, 2018
CI.md #fix  Actualize feature's docs (#516) Aug 15, 2018
README.md #fix  Actualize feature's docs (#516) Aug 15, 2018
ecommerce.md rf#113 Move some ecommerce description to SE side (#330) Jun 6, 2018
gulpfile.babel.js #505 vendor for slider siblings (#528) Aug 17, 2018
manage.py [816] With STB release refactor (#90) Nov 21, 2016
package.json Add ga(...) as reserved word for uglify (#483) Aug 6, 2018
requirements.txt #629 Grade refarm version to 0.4.14 (#631) Nov 7, 2018

README.md

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"

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

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

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, пароли к локальным базам
  • Запрашиваем у Архитектора: Пароль к FTP и почтовому серву

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

Установка refarm-site

Сайт использует refarm-site как внешнюю зависимость. Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта нужно поправить код refarm-site вместе с кодом сайта. Для этого можно установить его как зависимость для разработки (pip -e). И примонтировать внутрь контейнера app. Смотрите на переменную окружения REFARM_SITE.

Makefile

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

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

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

# запускаем один тест
dc exec app python manage.py test -v 3 --liveserver=app:8021-8029 \
    stroyprombeton.tests.tests_selenium.CartTestCase.buy_on_product_page

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

Новый год