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 :
- Par le client Web Scalingo et sélectionner la branche en question à déployer ;
- 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é.