Slide 1

Slide 1 text

Никита Соболев github.com/sobolevn

Slide 2

Slide 2 text

Repeatable Software Development Process https://wemake.services/meta/

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

• Все проекты должны быть одинаковыми по структуре и правилам • Приемка работы - должна быть одинаково сурова для всех проектов • Проекты не должны застывать в legacy

Slide 5

Slide 5 text

bit.ly/wms-django

Slide 6

Slide 6 text

Документация docs/ wemake-django-template.rtfd.io

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Зависимости Pipfile, Pipfile.lock

Slide 9

Slide 9 text

We love our build as we love our processes Repeatable!

Slide 10

Slide 10 text

pipenv • Pipfile / Pipfile.lock уже сегодня • Deterministic builds • Управляет virtualenv • Проверяет безопасность зависимостей

Slide 11

Slide 11 text

py.test tests/, setup.cfg

Slide 12

Slide 12 text

py.test plugins • pytest-django • pytest-cov • pytest-xdist • pytest-isort • pytest-flake8

Slide 13

Slide 13 text

Линтинг Pipfile, setup.cfg

Slide 14

Slide 14 text

Почему я люблю строгий линтинг? • Он помогает при Code Review • Он делает код красивым и читаемым • Он помогает искать ошибки

Slide 15

Slide 15 text

flake8 vs pylint

Slide 16

Slide 16 text

– Александр Шорин «Можно pylint для отчетов использовать».

Slide 17

Slide 17 text

mypy setup.cfg

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

~/Desktop » mypy test_mypy.py test_mypy.py:2: error: Incompatible return value type (got "List[str]", expected "str") test_mypy.py:5: error: Argument 1 to "save_me_from_errors" has incompatible type "None"; expected "str"

Slide 20

Slide 20 text

Developer Happiness .pre-commit.yaml, docker-compose.yml

Slide 21

Slide 21 text

DevOps Happiness docker-compose.yml, docker/docker-compose.prod.yml, .gitlab-ci.yml

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Caddy

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Team Lead Happiness docker/ci.sh

Slide 27

Slide 27 text

Установка

Slide 28

Slide 28 text

~/Desktop » pip install cookiecutter ~/Desktop » cookiecutter gh:wemake-services/wemake-django-template ~/Desktop/test_project » docker-compose run --rm web python manage.py migrate ~/Desktop/test_project » docker-compose up

Slide 29

Slide 29 text

Обновление

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Notable mentions .editorconfig .idea .python-version doc8 @dependabot

Slide 32

Slide 32 text

Для чего не подходит?

Slide 33

Slide 33 text

– Александр Зеленяк «Вся тусовка на Гитхабе».

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Что еще предстоит • Добавить jones-complexity и wemake-python- styleguide • Допилить mypy-django-queryset • Ждать Gitlab и ReadTheDocs • Переехать на Postgres 10, Django 2

Slide 36

Slide 36 text

Хотите себе такой проект? Пишите! [email protected]

Slide 37

Slide 37 text

Вопросы? github.com/sobolevn