-
Notifications
You must be signed in to change notification settings - Fork 3
General release cycle
Le cycle de développement est formé de multiples itérations. Une itération se compose elle-même de 3 processus communicants et autonomes:
- Demande de fonctionnalités (feature request)
- Développement des fonctionnalités (feature development)
- Mise en production (migration)
Les processus techniques sont décrits en détail dans la recette relative.
Phase administrative composée des étapes
- L'utilisateur écrit une demande en forme de commentaire sur la page wiki (fixme: wiki page link)
- La demande est validée lors de la prochaine séance
- Une demande wiki est créée (example, création d'une nouvelle demande) (fixme: example wiki page link)
Phase technique composée des étapes
- La demande wiki passe en état "A implémenter"
- Un ou plusieurs ticket(s) github sont créé, avec réf. vers la demande wiki
- La fonctionnalité est développée et testée par le développeur
-
La migration est effectuée sur l'instance de release -
la migration des données est également testée par le développeur avec une copie des données de production -
La fonctionnalité est testée et validée par les utilisateurs -
en cas d'anomalie (bug), la fonctionnalité est corrigée et le processus de mise en production est recommencé -
après validation, aucune modification ne peut plus être apportée à la fonctionnalité -
La migration est effectuée sur l'instance de production -
les données de production ont été préalablement sauvegardées -
La demande wiki est archivée et les tickets github fermés -
en cas d'une détection d'anomalie (bug) à posteriori, une nouvelle itération est mise en place.
Structure du système de version: x.y.z (eg. 1.0.0)
- x: Major version: Updated on: Major architecture/conceptual change leading to incompatibilities
- y: Minor version: Updated on: Feature addition, modification, removal
- z: Subminor version: Updated on: Hotfixes
Une migration est effectuée lorsqu'il faut modifier une partie de la base de données (structure ou données) et s'effectue généralement lors de l'implémentation de fonctionnalités.
Par exemple, une fonctionnalité demandant d'ajouter un champs de type liste déroulante nécessite de modifier la base de données en créant un catalogue contenant les options de la liste.
Une partie de ces étapes est commune avec le déroulement d'une mise en production.
- Créer le ticket sur github pour la fonctionnalité ou la migration
- Créer la branche git et développer
- Lancer les tests unitaires
- Créer le script de migration nommé
issue#{numero}-nom-de-la-branche-git
dansscripts/migrations/
.
La migration doit se faire à partir du tag git correspondant à la version de production.
- Se positionner sur le tag git correspondant à la version de production actuelle
- (Re)déployer la base de données de l'application from scratch et tester le bon fonctionnement de l'application
- Exécuter le script de migration et tester le bon fonctionnement de l'application
- Lancer les tests unitaires
Lors du développement de fonctionnalités, nous utilisons le modèle de branchage git suivant.
-
Master branch is never use to commit directly.
Any development (new feature, modification or bugfix) has to be made in a dedicated branch. - Releases are made by tagging the master branch with a release tag.
Source: http://nvie.com/posts/a-successful-git-branching-model/