meta données pour cette page
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| certif:procedure:develop:proceduremiseenligne:logeas-web [2026/08/03 15:53] – nicolas | certif:procedure:develop:proceduremiseenligne:logeas-web [2026/09/30 10:33] (Version actuelle) – nicolas | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Cycle de release LoGeAsWeb ====== | + | |{{: |
| + | |{{: | ||
| - | // | + | ====== Proc#169 - Cycle de release LoGeAs Web ====== |
| - | // | + | |
| - | Ce document décrit le dispositif maîtrisé de publication de LoGeAsWeb : de la sauvegarde du travail individuel jusqu' | + | ===== Informations qualité ===== |
| - | ---- | + | ^Suivi des modifications majeures^^^ |
| + | ^Date^Auteur^Modifications^ | ||
| + | |3 août 2026|Nicolas MARCHAND|Création du document| | ||
| + | |30 septembre 2026|Nicolas MARCHAND|Alignement sur la chaîne de qualification et de livraison (Proc#168) : la livraison est faite par les scripts '' | ||
| - | ===== 1. Contexte et objectifs ===== | + | |**Suivi des approbations** |[[https:// |
| + | |**Objet** |Décrire le dispositif technique de gestion des versions et de publication de LoGeAs Web, depuis l' | ||
| + | |**Destinataires** |**- Validation des modifications :** Gérant \\ **- Approbation du document :** Équipe développement| | ||
| - | ==== 1.1 Constat avant formalisation ==== | + | \\ |
| - | Avant la mise en place de ce dispositif, le cycle de publication reposait entièrement sur des gestes manuels, variables selon la personne | + | ===== 1. Objet et périmètre ===== |
| - | * Aucun garde-fou automatique : rien n' | + | Ce document décrit le dispositif technique |
| - | * Dérive silencieuse du numéro | + | |
| - | * Aucune isolation | + | |
| - | * Convention de tag non fiabilisée : coquille orthographique reproduite sur plusieurs tags historiques ('' | + | |
| - | * Absence de traçabilité fine des fusions : les commits | + | |
| - | ==== 1.2 Objectifs du dispositif ==== | + | Il complète les documents suivants : |
| - | * **Traçabilité** | + | * [[certif:procedure: |
| - | * **Reproductibilité** | + | * [[certif: |
| - | * **Garde-fous automatiques** : impossible | + | * [[certif: |
| - | * **Séparation stricte des environnements | + | |
| - | * **Discipline | + | |
| - | ---- | + | **En cas de divergence entre ce document et Proc#168 sur le déroulé d'une livraison, Proc#168 fait foi.** Le présent document explique comment le dispositif fonctionne ; il ne remplace ni les décisions de validation ni les contrôles de qualification. |
| - | ===== 2. Vue d' | + | ===== 2. Objectifs |
| - | Le cycle se déroule en 4 étapes séquentielles. Seules les étapes 2 à 4 correspondent à une procédure outillée (une commande dédiée, exécutée via l' | + | Le dispositif |
| - | {{ :certif:procedure:develop: | + | * **Reproductibilité** |
| - | NB : SVG stocké sur le wiki éditable par exemple avec Inkscape | + | * **Traçabilité** |
| + | * **Sécurisation** | ||
| + | * **Séparation | ||
| + | * **Maîtrise du versionnage** | ||
| + | * **Conservation des preuves** : permettre de retrouver les informations nécessaires à la justification d'une livraison. | ||
| - | ^ Étape ^ Type ^ Déclencheur ^ Résultat ^ | + | ===== 3. Architecture générale |
| - | | 1. Travail personnel | Manuel | En continu pendant le développement | Sauvegarde de l' | + | |
| - | | 2. fusion-dev | Outillée | Travail perso jugé prêt à intégrer | Intégration à la branche de version commune, 1ère vérification technique | + | |
| - | | 3. release-beta | Outillée | Branche de version jugée stable pour test interne | Build déposé dans '' | + | |
| - | | 4. release-client | Outillée | Beta validée (ou release directe si pas de beta jugée nécessaire) | Build déposé dans '' | + | |
| - | Le passage d'une étape à l' | + | Le cycle de publication suit les huit étapes de la chaîne |
| - | ---- | + | ^ Étape ^ Opération ^ Outil ^ Résultat ^ |
| + | | 1 | Travail personnel puis intégration | ''/ | ||
| + | | 2 | Qualification | '' | ||
| + | | 3 | Validation du rapport qualité | carto, écran « Rapports de version » | Rapport validé (avec ou sans réserves) et publié | | ||
| + | | 4 | Beta | '' | ||
| + | | 5 | Déploiement sur le serveur de test | copie manuelle | Beta disponible pour la recette | | ||
| + | | 6 | Recette de la beta | carto, écran « Rapports de version » | Recette conforme ou non conforme | | ||
| + | | 7 | Release client | '' | ||
| + | | 8 | Déploiement client | copie manuelle | Version en ligne | | ||
| - | ===== 3. Détail des procédures ===== | + | Deux **portes bloquantes** encadrent les livraisons : la porte beta (avant l' |
| - | ==== 3.1 Étape 1 — Travail personnel (manuel) ==== | + | Le passage d'une étape à l' |
| - | **Déclencheur :** en continu, à chaque fois qu'on veut sauvegarder son avancement personnel, sans que le travail soit terminé. | + | **Rôle des commandes de l' |
| - | **Description :** chacun committe et pousse sa branche personnelle à sa propre façon. Aucune commande dédiée, aucune vérification imposée à ce stade (le code peut très bien ne pas compiler ou casser des tests — ce n'est pas grave puisque c' | + | **Il n'y a pas de release client sans beta recettée** : la porte release l'exige. La seule exception |
| - | **Justification du choix de ne rien outiller ici :** imposer un build/ | + | ===== 4. Organisation des dépôts |
| - | **Non couvert par cette étape :** aucune fusion vers le travail commun de l' | + | ==== 4.1 Dépôts ==== |
| - | --- | + | Le cycle concerne principalement les dépôts suivants : |
| - | ==== 3.2 Étape 2 — fusion-dev (procédure outillée) ==== | + | ^ Dépôt ^ Rôle ^ |
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| - | **Déclencheur :** le travail sur la branche | + | Les bibliothèques de '' |
| - | **Étapes détaillées :** | + | ==== 4.2 Environnements de génération ==== |
| - | - **Identification de la branche cible** : la branche de version numérotée actuellement en développement (à ce jour '' | + | Les builds sont générés localement |
| - | - **Mise à jour** : '' | + | |
| - | - **Fusion avec log complet** : récupération de la liste complète des commits qui vont être intégrés ('' | + | |
| - | - **Vérification post-fusion** : '' | + | |
| - | - **Publication** : si tout passe, '' | + | |
| - | **Garde-fous :** jamais de '' | + | ^ Destination ^ Usage ^ |
| + | | '' | ||
| + | | '' | ||
| - | **Sortie | + | La séparation des destinations est assurée par les configurations Angular |
| - | --- | + | * '' |
| + | * '' | ||
| - | ==== 3.3 Étape 3 — release-beta (procédure outillée) ==== | + | Cette séparation évite qu'une génération de test écrase directement les fichiers de production. |
| - | **Déclencheur :** la branche commune de la version en cours est jugée stable et prête pour une phase de test/ | + | ==== 4.3 Déploiement ==== |
| - | **Étapes détaillées :** | + | La génération des fichiers et leur déploiement sur les serveurs sont deux opérations distinctes. |
| - | - **État des lieux** : vérification que la branche | + | Le transfert vers les serveurs |
| - | - **Build** : '' | + | |
| - | - **Commit du bump de version** : le bump ('' | + | |
| - | - **Tag** : tag annoté '' | + | |
| - | **Garde-fous :** jamais | + | Les scripts |
| - | **Sortie :** build compilé/ | + | ===== 5. Description technique des étapes ===== |
| - | **Hors périmètre :** le déploiement vers le serveur de test réel reste **manuel** — '' | + | ==== 5.1 Travail personnel ==== |
| - | --- | + | Chaque développeur travaille sur une branche personnelle issue de la branche de version concernée. |
| - | ==== 3.4 Étape 4 — release-client (procédure outillée) ==== | + | Les commits et les sauvegardes de cette branche restent libres, afin de ne pas imposer les contrôles de publication à chaque sauvegarde intermédiaire. |
| - | **Déclencheur :** la beta correspondante a été validée | + | Cette étape ne constitue pas une intégration |
| - | **Étapes détaillées :** | + | Le premier contrôle technique obligatoire du cycle intervient lors de l' |
| - | - **État des lieux** : vérification que la branche de version est propre et à jour. Si cette release fait suite à une beta, vérification que rien d' | + | ==== 5.2 Intégration |
| - | - **Build** | + | |
| - | - **Commit du bump de version** : commit séparé du bump ('' | + | |
| - | - **Tag** : tag annoté '' | + | |
| - | **Garde-fous :** jamais de tag sur un build cassé ; jamais de '' | + | La commande |
| - | **Sortie | + | Elle réalise les opérations suivantes |
| - | **Hors périmètre :** le déploiement vers le serveur client reste **manuel**, pour la même raison | + | |
| + | | ||
| + | | ||
| + | | ||
| + | * constitution | ||
| + | * vérification du code après fusion ; | ||
| + | * publication de la branche commune si les contrôles sont satisfaisants. | ||
| - | ---- | + | Les contrôles techniques portent sur : |
| - | ===== 4. Numérotation des versions ===== | + | * la compilation Angular ; |
| + | * les tests unitaires ; | ||
| + | * l' | ||
| - | ==== 4.1 Règle ==== | + | Les résultats sont examinés avant la publication de la branche commune. |
| - | Le numéro | + | En cas d' |
| - | * Une **beta** ajoute un **4ᵉ chiffre** ('' | + | La procédure |
| - | * Si le nom de la branche de version ressemble à un numéro (ex. '' | + | |
| - | * Une **release** repasse en 3 chiffres en retirant simplement le '' | + | |
| - | * Le 3ᵉ chiffre n'est incrémenté par une release que si ce '' | + | |
| - | Cette règle garantit qu'il n' | + | **Résultat attendu :** une branche |
| - | ==== 4.2 Implémentation technique | + | ==== 5.3 Qualification : qualifier-version |
| - | La règle est implémentée dans '' | + | Le script |
| - | <code javascript> | + | Il réalise les opérations suivantes : |
| - | function resolveNextVersion(currentVersion, | + | |
| - | const [x, y, z, w] = parseVersion(currentVersion); | + | |
| - | const current = [x, y, z]; | + | |
| - | let target = current; | + | |
| - | | + | |
| - | | + | |
| - | const branchTriplet = branchMatch.slice(1).map(Number); | + | * reconstruction de '' |
| - | | + | * démarrage des serveurs locaux |
| - | target = branchTriplet; // rattrapage : nouveau cycle, jamais utilisé | + | * tests unitaires des deux dépôts, puis tests d' |
| - | } | + | |
| - | | + | |
| - | | + | |
| - | if (mode === 'beta') { | + | Le rapport est nommé |
| - | return isNewCycle ? `${target.join('.')}.1` : `${current.join('.')}.${w + 1}`; | + | |
| - | } | + | |
| - | // mode === 'release' | + | Le rapport est ensuite validé, validé avec réserves ou refusé dans la carto (Proc#168, « Validation du rapport qualité »). |
| - | | + | |
| - | | + | ==== 5.4 Beta : livrer-beta ==== |
| - | | + | |
| - | | + | Le script |
| - | | + | |
| - | | + | Les opérations techniques sont les suivantes : |
| - | | + | |
| - | } | + | |
| + | - mise à jour du numéro de version, 4ᵉ chiffre | ||
| + | - génération du rapport de release ('' | ||
| + | | ||
| + | | ||
| + | - après confirmation : publication du commit et du tag, **inscription de la beta dans la trace du rapport qualité** | ||
| + | |||
| + | Si le rapport de release ou le build échoue, la mise à jour du numéro de version est annulée : rien n'est commité ni tagué. | ||
| + | |||
| + | La beta ne vaut pas validation fonctionnelle : elle fournit l' | ||
| + | |||
| + | ==== 5.5 Release client : livrer-release ==== | ||
| + | |||
| + | Le script '' | ||
| + | |||
| + | - **porte release** ('' | ||
| + | - mise à jour du numéro de version à 3 chiffres ('' | ||
| + | - génération du rapport de release ; | ||
| + | - compilation | ||
| + | | ||
| + | | ||
| + | |||
| + | Le rapport qualité, publié lors de sa validation, est la pièce qualité de la release. | ||
| + | |||
| + | **Tout correctif après une beta impose une nouvelle qualification et une nouvelle beta** | ||
| + | |||
| + | ==== 5.6 Build hors chaîne ==== | ||
| + | |||
| + | Les commandes | ||
| + | |||
| + | ===== 6. Gestion des versions ===== | ||
| + | |||
| + | ==== 6.1 Format ==== | ||
| + | |||
| + | Les versions de LoGeAs Web utilisent trois ou quatre composantes numériques : | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Le suffixe | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Les règles générales de numérotation sont définies dans la [[certif: | ||
| + | |||
| + | ==== 6.2 Calcul automatique ==== | ||
| + | |||
| + | Le calcul est centralisé dans : | ||
| + | |||
| + | < | ||
| + | scripts/ | ||
| </ | </ | ||
| - | ^ Script npm ^ Commande exécutée ^ Mode ^ | + | La fonction |
| - | | '' | + | |
| - | | '' | + | * de la version actuelle de '' |
| + | * du nom de la branche de version | ||
| + | * du mode de génération (beta ou release) ; | ||
| + | * des tags de release déjà présents dans Git. | ||
| + | |||
| + | Pour une beta, le quatrième chiffre est incrémenté à chaque nouvelle génération du même cycle. | ||
| + | |||
| + | Lorsqu'une nouvelle branche numérotée correspond à un cycle ultérieur, le script utilise son numéro comme nouvelle base de version. | ||
| + | |||
| + | Pour une release, le quatrième chiffre est supprimé. Le numéro | ||
| + | |||
| + | La commande | ||
| + | |||
| + | ==== 6.3 Traçabilité de la version ==== | ||
| - | ==== 4.3 Exemple déroulé sur un cycle complet ==== | + | Le fichier '' |
| - | Point de départ : la dernière release livrée est '' | + | Il contient |
| - | {{ : | + | * la branche Git ; |
| - | NB : SVG stocké sur le wiki éditable par exemple avec Inkscape | + | |
| + | * la date de génération. | ||
| - | (fichier | + | Ces données permettent de rapprocher une version exécutée de son état source. |
| - | ^ Étape ^ Procédure ^ Branche ^ package.json (avant → après) ^ Tag posé ^ | + | ==== 6.4 Cas particuliers ==== |
| - | | 1 | Travail perso (manuel, plusieurs commits) | feature/ | + | |
| - | | 2 | fusion-dev (1ère vérification build/ | + | |
| - | | 3 | release-beta (1ère beta) | 11.0.25 | 11.0.23 → 11.0.25.1 (rattrapage sur la branche, W démarre à 1) | 11.0.25.1_beta | | + | |
| - | | 4 | Travail perso + fusion-dev (correctif suite retour de test) | 11.0.25 | 11.0.25.1 → 11.0.25.1 (inchangé) | — | | + | |
| - | | 5 | release-beta (2ᵉ beta) | 11.0.25 | 11.0.25.1 → 11.0.25.2 (W incrémenté, | + | |
| - | | 6 | release-client | 11.0.25 | 11.0.25.2 → 11.0.25 (W retiré, même X.Y.Z que les betas — jamais publié avant) | 11.0.25_release | | + | |
| - | | 7 | release-beta (cycle suivant, branche 11.0.26) | 11.0.26 | 11.0.25 → 11.0.26.1 (rattrapage sur la nouvelle branche) | 11.0.26.1_beta | | + | |
| - | **Lecture :** l' | + | Les cas de changement |
| - | ---- | + | Ils ne doivent pas conduire à réécrire l' |
| - | ===== 5. Garde-fous et traçabilité (aspects qualité) | + | ===== 7. Contrôles et garde-fous ===== |
| - | Ces garde-fous s' | + | Les procédures outillées |
| - | * **Aucune action destructive automatique** : jamais de '' | + | ^ Contrôle ^ Étape concernée ^ Objectif ^ |
| - | * **Blocage systématique sur échec** : un build cassé ou des tests en échec bloquent la suite de la procédure — impossible de produire | + | | État des dépôts |
| - | * **Traçabilité du code livré** : '' | + | | Branche de version | Toutes les étapes outillées | Garantir que l'opération concerne la branche attendue | |
| - | * **Traçabilité | + | | Compilation, |
| - | * **Traçabilité | + | | Tests unitaires et tests d' |
| - | * **Discipline | + | | Porte beta | Beta | N' |
| + | | Porte release | Release | N' | ||
| + | | Paquets | ||
| + | | Numéro | ||
| + | | Séparation | ||
| + | | Liste des commits intégrés | ||
| + | | Rapport | ||
| - | ---- | + | En cas d' |
| - | ===== 6. Ce qui reste volontairement manuel ===== | + | Aucune procédure ne doit résoudre silencieusement un conflit métier ou écraser des modifications non validées. |
| - | * **Le déploiement final vers les serveurs** (test et client) : '' | + | Les opérations de publication n'utilisent pas '' |
| - | * **La sauvegarde du travail personnel** (étape 1) : choix délibéré pour ne pas ralentir les sauvegardes fréquentes d'un travail potentiellement inachevé (voir 3.1). | + | |
| - | * **La décision de progression** : quand fusionner, quand passer en beta, quand livrer au client — ce sont des décisions d' | + | |
| - | ---- | + | Les échecs de tests déjà connus doivent être identifiés et distingués des régressions introduites par le changement en cours : c'est l' |
| - | ===== 7. Évolutions apportées par ce dispositif | + | ===== 8. Rapports et éléments de preuve |
| - | ^ Avant ^ Après ^ | + | Les éléments suivants permettent de reconstituer une publication |
| - | | Étapes manuelles, non reproductibles | 3 procédures outillées (fusion-dev, | + | |
| - | | Aucun garde-fou | + | |
| - | | '' | + | |
| - | | Build de test et build client indifférenciés (tout partait vers '' | + | |
| - | | Numéro de beta et de release parfois désynchronisés du nom de branche, betas consommant un numéro jamais publié | Beta = 4ᵉ chiffre, release = reprise du même 3ᵉ chiffre — aucun numéro orphelin | | + | |
| - | | Coquille orthographique reproduite sur les tags ('' | + | |
| - | | Commit de fusion au titre générique, | + | |
| - | ---- | + | * l' |
| + | * le commit de fusion et la liste des commits intégrés ; | ||
| + | * le commit « Preparation version » ; | ||
| + | * le tag annoté de beta ou de release (et le tag '' | ||
| + | * les informations intégrées dans '' | ||
| + | * le **rapport qualité** de la version ('' | ||
| + | * le **rapport de release** HTML, enregistré dans '' | ||
| - | ===== 8. Annexes techniques ===== | + | ^ Élément ^ Où le consulter ^ |
| + | | Rapports qualité, décisions, recettes, rapports de release | carto, écran « Rapports de version » ([[https:// | ||
| + | | Historique d'un rapport (validation, | ||
| + | | Qualification d'une version livrée | son rapport de release et « À propos > Logiciel » | | ||
| - | ==== 8.1 Fichiers concernés (dépôt logeas-web) ==== | + | Les modalités de validation et de conservation de ces preuves relèvent de la [[certif: |
| - | ^ Fichier ^ Rôle ^ | + | ===== 9. Opérations restant manuelles ===== |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | ==== 8.2 Procédures outillées (assistant Claude Code) ==== | + | Les opérations suivantes restent sous la responsabilité des personnes habilitées : |
| - | ^ Commande ^ Fichier source ^ Rôle ^ | + | * le choix du moment de l' |
| - | | ''/ | + | * le lancement de la qualification ; |
| - | | ''/ | + | * la relecture et la validation du rapport qualité ; |
| - | | ''/ | + | * le lancement de la beta ; |
| + | * la recette de la beta ; | ||
| + | * le lancement de la release | ||
| + | * le transfert des fichiers générés vers les serveurs ; | ||
| + | * la vérification du déploiement sur l'environnement cible. | ||
| - | ==== 8.3 Convention | + | La séparation entre génération, |
| - | * Beta : '' | + | ===== 10. Maintenance du dispositif ===== |
| - | * Release : '' | + | |
| - | ---- | + | Les scripts et configurations qui mettent en œuvre le cycle de release font partie du dispositif de développement de LoGeAs Web. |
| - | ===== 9. Points ouverts à valider avec l'équipe ===== | + | Toute modification significative de ces éléments doit être contrôlée et testée avant d'être utilisée pour une publication. |
| - | * Le passage en beta n'est pour l' | + | Les évolutions du dispositif doivent préserver : |
| - | * La convention de nommage des branches de version (ex. '' | + | |
| - | * Les noms des procédures pourront être ajustés une fois éprouvés en pratique, avant validation définitive de cette page pour le dossier de certification. | + | |
| - | ---- | + | * la traçabilité des versions ; |
| + | * la reproductibilité des générations ; | ||
| + | * la séparation des environnements ; | ||
| + | * la fiabilité des contrôles et des portes ; | ||
| + | * la conservation des preuves nécessaires à la certification. | ||
| - | //Document généré à partir | + | La présente procédure doit être révisée lorsque le fonctionnement effectif du cycle de release évolue. |