CI-CD
Pre-commit
Installation
Pour installer pre-commit avec tous les packages:
$ make setup-pre-commit
Une fois que pre-commit est installé, il va lancer l'autoformatter et le linter avant chaque commit. S'il y a un souci avec le code, le commit sera annulé.
Contourner la vérification
Si on veut ajouter un WIP commit sans avoir besoin de verification, on peut ajouter le --no-verify flag:
$ git commit --no-verify -m "commit-message"
Note: L'autoformatter et linter font parties des test automatisés sur Github actions. On peut contourner la vérification local mais pas dans le repository.
Autoformatter - Black
Pour lancer seulement l'autoformatter, après avoir installé les packages de requirements.txt:
$ black ./
Le configuration de black se trouve dans le fichier pyproject.toml
Linter - Flake8 + Bugbear
Pour lancer seulement le linter, après avoir installé les packages de requirements.txt:
$ flake8 ./
Le configuration de flake8 se trouve dans .flake8
Exclusions
On peut trouver les règles de flake8 ici
Les règles exclues pour l'instant sont:
- E203 - Whitespace before ':' - Raison
- E302 - Two blank lines are expected between functions and classes.
- E402 - All module level imports should be at the top of the file. This means that there should be no statements in between module level imports.
- E501 - Line too long
- W292 - No newline at end of file
- W503 - Line break occurred before a binary operator
Automatisation des tests
tox
Gestion des environments virtuels et organisation des tests. Le configuration se trouve dans le fichier pyproject.toml dans la section [tool.tox].
Pour lancer les tests, il faut d'abord:
- installer les packages de requirements.txt
- définir services/backend comme dossier racine
Commande pour lancer les tests tox:
$ tox
Github Actions
Le Github Actions workflow testing-for-merge effectue les actions suivantes:
- Crée un service Postgres pour l'accès à la base de données pendant les tests
- Setup Python
- Installe le package tox pour Github actions Source
- Lance les tests orchestrées par tox