Aller au contenu principal

Mise en Production

7 novembre 2022

Contributeurs​

SĂ©bastien F.

Statut​

Accepté

Contexte​

Lorsque nous devons faire un rollback d'une mise en production (MEP), nous souhaitons que cela se fasse à partir de la dernière version qui a été mise en production.

Il a été décidé que les MEP soient effectués une à deux fois par itération.

Décision​

Pour pouvoir facilement revenir à la version précédente, il faudrait que nous ayons un historique précis des différentes versions qui sont parties en production.

1. Création d'une version​

Nous utilisons actuellement release-please afin de générer des versions et des notes de version.

Une version sera créée à chaque fois qu'un commit possédant les mots clés feat ou fix sera mergé sur main. Une version sera également créée à chaque introduction d'un breaking change.

Par exemples :

  • Breaking change : chore!: modification drastique dans l'utilisation de l'application.
  • FonctionnalitĂ© : feat(stages): ajout d'une nouvelle fonctionnalitĂ©
  • Correction de bug : fix(stages): correction d'un bug

En suivant le principe de semantic versionning, le premier exemple provoquera une montée de version majeure : 1.0.0 -> 2.0.0, le second exemple provoquera une montée de version mineure : 1.0.0 -> 1.1.0 et le dernier exemple provoquera une montée de version corrective : 1.0.0 -> 1.0.1.

Il est également possible de forcer la création d'une version en le précisant dans un commit vide.

Par exemple : git commit --allow-empty -m "chore(some context): release 2.0.1" -m "Release-As: 2.0.1".

⚠️ release-please va créer une Pull Request qu'il est impératif de merger pour créer un tag (au sens Git) et pour créer les notes de version associées.

2. Créer la branche liée à la version​

Scalingo ne nous permet pas actuellement déployer un tag. De ce fait, il vous faudra nécessairement créer une branche de release. La nomenclature à suivre serait idéalement la suivante : release/<numéro de version>.

Par exemple :

release/2.8.3

3. Déployer la branche versionnée​

Deux options sont possibles :

  1. Par le client Web Scalingo et sélectionner la branche en question à déployer ;
  2. Par le dépôt 1j1s-infrastructure après modifié la variable d'environnement de la branche à déployer.

Conséquences​

Une mise à jour du code du dépôt 1j1s-infrastructure est nécessaire.

Enfin, nous pourrons effectuer un rollback de l'application en toute sécurité.