Flux de travail pour créer une nouvelle version

  1. Remplir le fichier CHANGELOG.md avec la nouvelle version

  2. Changer le numéro de version dans __init__.py

  3. Création d’un nouveau répertoire dans le dossier versions et appliquer les modifications suivantes :

    1. Création à minima d’un répertoire api avec le fichier __init__.py. Vous pouvez copier le contenu d’une version précédente. Changez le chemin vers les endpoints en fonction des changements opérés (Si pas de changement côté endpoints, alors vous pouvez importer les endpoints de la version précédente, à condition de ne pas supprimer le dossier de la version précédente).

    2. Le fichier exceptions doit également être ajouté à la racine de ce nouveau dossier. Pensez à mettre à jour le chemin des imports.

    3. En supplément des 2 fichiers précédents, ajoutez dans ce dossier tous les fichiers qui diffèrent par rapport à la version précédente

    4. Des modifications doivent être effectués dans le fichier main.py :

      1. Ajoutez les imports de la nouvelle version (api et exceptions en y ajoutant des alias)

      2. Créez une variable sur le modèle des précédentes (Ex. VERSION_3_0), ajoutez le router de la dernière version et mettre à jour les préfixes des routes des précédents routeurs (notamment le préfixe NO_VERSION qui doit s’appliquer à la dernière version) 1.Ajoutez une condition à la méthode validation_exception_handler pour importer le fichier exceptions correspondant à la version

    5. Les chemins des imports doivent être mis à jour dans le dossier tests. Ils doivent utiliser la dernière version. Des chemins sont à modifier dans les fichiers suivants : conftest.py, test_alti.py, test_resources.py

    6. Mise à jour du fichier setup.cfg sur la section pytest en ajoutant éventuellement les versions à ignorer (Ex: --ignore=alti_api/versions/v1_0/* et dans la section coverage par ex: alti_api/versions/v1_0/exceptions.py)

  4. En fonction du cycle de vie de l’application, vous pouvez passer en deprecated certains versions et donc retirer les codes correspondants dans le fichier main.py.

  5. Appliquer un tag git avec la version correspondante : git tag -a 0.3.0 {git commit hash} -m "New awesome feature"

  6. Pousser le tag sur la branche principale : git push origin --tags

  7. La CI gitlab va alors publier une nouvelle image docker avec le tag ci-dessus et le lag latest.