16  Intégration continue

Une fois les règles de style, les conventions de typage et les outils de test définis, la prochaine étape logique consiste à automatiser leur exécution à chaque modification du code.

L’intégration continue permet de garantir que chaque modification respecte les règles de qualité et ne casse rien en cours de route. Elle automatise l’exécution :

Elle repose généralement sur un système de pipeline (GitHub Actions, GitLab CI, CircleCI, etc.) déclenché à chaque push ou pull request.

Dans ce chapitre, nous verrons comment :

16.1 setup.cfg

[flake8]
max-line-length = 100
exclude = .tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules,venv

[pycodestyle]
max-line-length = 100
exclude = .tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules,venv

[mypy]
python_version = 3.8
check_untyped_defs = True
ignore_missing_imports = True
warn_unused_ignores = True
warn_redundant_casts = True
warn_unused_configs = True
plugins = mypy_django_plugin.main

[mypy.plugins.django-stubs]
django_settings_module = config.settings.test

[mypy-*.migrations.*]
# Django migrations should not produce any errors:
ignore_errors = True

[coverage:run]
include = khana/*
omit = *migrations*, *tests*
plugins =
django_coverage_plugin