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:chainequalificationlivraison [2026/09/25 15:50] – nicolas | certif:procedure:develop:chainequalificationlivraison [2026/09/30 10:08] (Version actuelle) – nicolas | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Chaîne | + | |{{: |
| + | |{{: | ||
| - | Cette page explique comment une version | + | ====== Proc#168 - Chaîne |
| - | qualification | + | |
| - | développeurs, | + | |
| - | Voir aussi : [[tests_e2e_playwright|Lancer les tests E2E]] (détail du run complet) et la méthodologie | + | ===== Informations qualité ===== |
| - | des tests ('' | + | |
| - | ===== Pourquoi une chaîne ===== | + | ^Suivi des modifications majeures^^^ |
| + | ^Date^Auteur^Modifications^ | ||
| + | |25 septembre 2026|Nicolas MARCHAND|Création du document| | ||
| + | |**Suivi des approbations** |[[https:// | ||
| + | |**Objet** |Cette page explique comment une version de LoGeAs Web passe du code fusionné à la livraison client : qualification par les tests, validation du rapport qualité, beta, recette, release.| | ||
| + | |**Destinataires** |**- Validation des modifications :** Gérant \\ **- Approbation du document :** Équipe développement, | ||
| + | |||
| + | |||
| + | ===== Pourquoi une chaîne ===== | ||
| Avant, les tests et la livraison formaient deux circuits séparés : | Avant, les tests et la livraison formaient deux circuits séparés : | ||
| * une beta pouvait partir sans rapport qualité validé ; | * une beta pouvait partir sans rapport qualité validé ; | ||
| - | * entre deux betas, un run de tests était rangé sous la version de la **dernière beta livrée**, alors | + | * entre deux betas, un run de tests était rangé sous la version de la **dernière beta livrée**, alors qu'il testait la **prochaine** ; |
| - | | + | * les tests unitaires étaient joués deux fois (run complet, puis rapport de release), sans garantie que ce soit sur le même code. |
| - | * les tests unitaires étaient joués deux fois (run complet, puis rapport de release), sans garantie | + | |
| - | | + | |
| Désormais, **aucune version n'est livrée sans un rapport qualité validé qui porte sur son code exact**, | Désormais, **aucune version n'est livrée sans un rapport qualité validé qui porte sur son code exact**, | ||
| Ligne 42: | Ligne 46: | ||
| Point de départ : le travail est fusionné sur la branche de version (''/ | Point de départ : le travail est fusionné sur la branche de version (''/ | ||
| - | - **Pousser** la branche de version de // | + | - **Pousser** la branche de version de // |
| - | | + | |
| - **Fermer la fenêtre console d' | - **Fermer la fenêtre console d' | ||
| - | - Double-clic sur '' | + | - Double-clic sur '' |
| - | | + | - **Rester devant le poste** pendant la reconstruction de // |
| - | - **Rester devant le poste** pendant la reconstruction de // | + | |
| - | | + | |
| - **Ne rien commiter pendant le run**, dans aucun des deux dépôts. | - **Ne rien commiter pendant le run**, dans aucun des deux dépôts. | ||
| - | - Dans la carto, écran **Rapports de version** (connecté) : ouvrir '' | + | - Dans la carto, écran **Rapports de version** (connecté) : ouvrir '' |
| - | | + | - Double-clic sur '' |
| - | - Double-clic sur '' | + | - Répondre **'' |
| - | | + | - Copier '' |
| - | - Répondre **'' | + | |
| - | | + | |
| - | - Copier '' | + | |
| - | | + | |
| - Passer au **cas 2** (recette et release) ou, si un défaut est trouvé, au **cas 3**. | - Passer au **cas 2** (recette et release) ou, si un défaut est trouvé, au **cas 3**. | ||
| Ligne 65: | Ligne 62: | ||
| - Sur le serveur de test, dérouler la liste de contrôle de la recette (section « Recette de la beta »). | - Sur le serveur de test, dérouler la liste de contrôle de la recette (section « Recette de la beta »). | ||
| - | - Dans la carto, écran **Rapports de version**, sur le rapport qualité de la version : section | + | - Dans la carto, écran **Rapports de version**, sur le rapport qualité de la version : section **Recette de la beta '' |
| - | | + | |
| - | | + | |
| - Cliquer **Recette conforme** (le bouton n'est actif que si tous les points sont traités). | - Cliquer **Recette conforme** (le bouton n'est actif que si tous les points sont traités). | ||
| - Vérifier que **rien n'a été commité** depuis la beta, dans aucun des deux dépôts. | - Vérifier que **rien n'a été commité** depuis la beta, dans aucun des deux dépôts. | ||
| Ligne 77: | Ligne 72: | ||
| Que le défaut soit trouvé en recette ou autrement, **aucun correctif ne part sur la beta existante**. | Que le défaut soit trouvé en recette ou autrement, **aucun correctif ne part sur la beta existante**. | ||
| - | - Si la recette était en cours : dans la carto, cliquer **Recette non conforme** avec un commentaire | + | - Si la recette était en cours : dans la carto, cliquer **Recette non conforme** avec un commentaire qui décrit le défaut (la trace garde ainsi pourquoi la beta n'est pas partie chez le client). |
| - | | + | |
| - Corriger sur sa branche perso, puis ''/ | - Corriger sur sa branche perso, puis ''/ | ||
| - | - Reprendre le **cas 1** depuis le début : nouvelle qualification (la version candidate devient la | + | - Reprendre le **cas 1** depuis le début : nouvelle qualification (la version candidate devient la beta suivante, ex. '' |
| - | | + | |
| ==== Cas 4 : le rapport qualité n'est pas bon ==== | ==== Cas 4 : le rapport qualité n'est pas bon ==== | ||
| Ligne 90: | Ligne 83: | ||
| - Corriger (branche perso, ''/ | - Corriger (branche perso, ''/ | ||
| - Le nouveau rapport est à valider ; l' | - Le nouveau rapport est à valider ; l' | ||
| - | - Si les échecs sont connus et suivis (chacun rattaché à un ticket ou à un échec déjà connu), on peut | + | - Si les échecs sont connus et suivis (chacun rattaché à un ticket ou à un échec déjà connu), on peut au contraire **Valider avec réserves**, |
| - | | + | |
| ==== Cas 5 : la qualification a échoué en cours de route ==== | ==== Cas 5 : la qualification a échoué en cours de route ==== | ||
| Ligne 98: | Ligne 90: | ||
| - Sans résultats des tests d' | - Sans résultats des tests d' | ||
| - | - Corriger la cause (fenêtres console des serveurs, par exemple), puis relancer | + | - Corriger la cause (fenêtres console des serveurs, par exemple), puis relancer '' |
| - | | + | |
| - Si un rapport a quand même été produit mais qu'il n'est pas exploitable : le **refuser** et relancer. | - Si un rapport a quand même été produit mais qu'il n'est pas exploitable : le **refuser** et relancer. | ||
| ==== Cas 6 : démarrer le cycle d'une nouvelle version ==== | ==== Cas 6 : démarrer le cycle d'une nouvelle version ==== | ||
| - | - Créer la nouvelle branche de version (ex. '' | + | - Créer la nouvelle branche de version (ex. '' |
| - | | + | - Basculer le poste sur ces branches ('' |
| - | - Basculer le poste sur ces branches ('' | + | - Travailler, fusionner (''/ |
| - | | + | |
| - | - Travailler, fusionner (''/ | + | |
| - | | + | |
| ==== Cas 7 : corriger une version déjà livrée au client ==== | ==== Cas 7 : corriger une version déjà livrée au client ==== | ||
| Ligne 115: | Ligne 103: | ||
| Même chaîne, sur la branche de la version en ligne. | Même chaîne, sur la branche de la version en ligne. | ||
| - | - Basculer sur cette version : '' | + | - Basculer sur cette version : '' |
| - | | + | |
| - Corriger, fusionner sur la branche de cette version, pousser. | - Corriger, fusionner sur la branche de cette version, pousser. | ||
| - | - Suivre le **cas 1** puis le **cas 2**. Comme cette version est déjà publiée (tag '' | + | - Suivre le **cas 1** puis le **cas 2**. Comme cette version est déjà publiée (tag '' |
| - | | + | - Reporter ensuite le correctif sur la version en cours de développement (''/ |
| - | | + | |
| - | - Reporter ensuite le correctif sur la version en cours de développement (''/ | + | |
| - | | + | |
| - | | + | |
| ==== Cas 8 : urgence, livrer sans la chaîne ==== | ==== Cas 8 : urgence, livrer sans la chaîne ==== | ||
| Ligne 131: | Ligne 114: | ||
| - Bump : '' | - Bump : '' | ||
| - | - Rapport de release **sans** qualification : '' | + | - Rapport de release **sans** qualification : '' |
| - | | + | - Build : '' |
| - | - Build : '' | + | |
| - | | + | |
| - | | + | |
| - Commit '' | - Commit '' | ||
| - | - Même sans rapport de release, **À propos > Logiciel** affiche « Version non qualifiée » : une version | + | - Même sans rapport de release, **À propos > Logiciel** affiche « Version non qualifiée » : une version absente des rapports de release est considérée comme construite hors chaîne. |
| - | | + | |
| - **Régulariser** dès que possible : qualification du même code, puis validation. | - **Régulariser** dès que possible : qualification du même code, puis validation. | ||
| Ligne 144: | Ligne 123: | ||
| - Lire le motif affiché : chaque refus dit quoi faire (tableau « Messages fréquents » ci-dessous). | - Lire le motif affiché : chaque refus dit quoi faire (tableau « Messages fréquents » ci-dessous). | ||
| - | - Pour revérifier sans rien modifier : | + | - Pour revérifier sans rien modifier : '' |
| - | | + | - **Ne jamais contourner une porte** : si le blocage est injustifié, |
| - | | + | |
| - | | + | |
| - | - **Ne jamais contourner une porte** : si le blocage est injustifié, | + | |
| - | | + | |
| ===== Les étapes en détail ===== | ===== Les étapes en détail ===== | ||
| Ligne 161: | Ligne 136: | ||
| * aucune modification locale non commitée ; | * aucune modification locale non commitée ; | ||
| * branche à jour avec '' | * branche à jour avec '' | ||
| - | * **Angular arrêté** (fermer sa fenêtre console) : sinon il continuerait de servir l' | + | * **Angular arrêté** (fermer sa fenêtre console) : sinon il continuerait de servir l' |
| - | | + | |
| Le script vérifie tout cela lui-même et s' | Le script vérifie tout cela lui-même et s' | ||
| lancer : '' | lancer : '' | ||
| Ligne 168: | Ligne 142: | ||
| **Lancer :** double-clic sur '' | **Lancer :** double-clic sur '' | ||
| - | - affiche la **version candidate** : la prochaine beta (ex. '' | + | - affiche la **version candidate** : la prochaine beta (ex. '' |
| - | | + | - reconstruit // |
| - | - reconstruit // | + | |
| - | | + | |
| - demande la **confirmation UAC** du démarrage des serveurs : **rester devant le poste jusque-là** ; | - demande la **confirmation UAC** du démarrage des serveurs : **rester devant le poste jusque-là** ; | ||
| - | - enchaîne sans surveillance : tests unitaires des deux dépôts, tests d' | + | - enchaîne sans surveillance : tests unitaires des deux dépôts, tests d' |
| - | | + | |
| **Pendant le run : ne rien commiter, ne rien pousser**, ni dans // | **Pendant le run : ne rien commiter, ne rien pousser**, ni dans // | ||
| Ligne 184: | Ligne 155: | ||
| ==== Validation du rapport qualité ==== | ==== Validation du rapport qualité ==== | ||
| + | |||
| + | //Cette validation porte sur le rapport qualité d'une version du logiciel. Elle est distincte de la validation d'un document au sens de [[certif: | ||
| Dans la carto, écran **Rapports de version**, connecté : relire le rapport (en particulier l' | Dans la carto, écran **Rapports de version**, connecté : relire le rapport (en particulier l' | ||
| Ligne 201: | Ligne 174: | ||
| - passe la **porte beta** (voir plus bas) : s'il manque quelque chose, il s' | - passe la **porte beta** (voir plus bas) : s'il manque quelque chose, il s' | ||
| - fait le bump de version (4ᵉ chiffre) et vérifie que c'est bien la version qualifiée ; | - fait le bump de version (4ᵉ chiffre) et vérifie que c'est bien la version qualifiée ; | ||
| - | - génère le rapport de release : les tests unitaires et le résumé des tests d' | + | - génère le rapport de release : les tests unitaires et le résumé des tests d' |
| - | | + | |
| - | | + | |
| - lance le build de production vers '' | - lance le build de production vers '' | ||
| - | - crée le commit « Preparation version X.Y.Z.W », le tag '' | + | - crée le commit « Preparation version X.Y.Z.W », le tag '' |
| - | | + | - **demande confirmation** avant de pousser. Si on accepte : push, inscription de la beta dans la trace du rapport qualité (indispensable pour la suite), reprise du rapport de release dans la carto. |
| - | - **demande confirmation** avant de pousser. Si on accepte : push, inscription de la beta dans la | + | |
| - | | + | |
| Si le rapport de release ou le build échoue, le bump est annulé : rien n'est commité ni tagué. | Si le rapport de release ou le build échoue, le bump est annulé : rien n'est commité ni tagué. | ||
| Si on refuse le push, le script affiche les commandes pour le faire plus tard, **y compris | Si on refuse le push, le script affiche les commandes pour le faire plus tard, **y compris | ||
| Ligne 252: | Ligne 221: | ||
| **Porte beta** : | **Porte beta** : | ||
| * les deux dépôts sont sur leur branche de version, propres, à jour et poussés ; | * les deux dépôts sont sur leur branche de version, propres, à jour et poussés ; | ||
| - | * un rapport d' | + | * un rapport d' |
| - | | + | * ce run n'a eu ni modification locale, ni changement de code en cours de route, et les paquets // |
| - | * ce run n'a eu ni modification locale, ni changement de code en cours de route, et les paquets | + | |
| - | | + | |
| * sa décision est « Validé » ou « Validé avec réserves ». | * sa décision est « Validé » ou « Validé avec réserves ». | ||
| **Porte release** : | **Porte release** : | ||
| - | * '' | + | * '' |
| - | | + | |
| * // | * // | ||
| - | * entre le code qualifié et la beta, seul le commit « Preparation version » (dans '' | + | * entre le code qualifié et la beta, seul le commit « Preparation version » (dans '' |
| - | | + | |
| * le rapport qualité est toujours validé, et la **recette** de cette beta est « Conforme ». | * le rapport qualité est toujours validé, et la **recette** de cette beta est « Conforme ». | ||
| Ligne 286: | Ligne 251: | ||
| | Rapports qualité, décisions, recettes | carto, écran **Rapports de version** ('' | | Rapports qualité, décisions, recettes | carto, écran **Rapports de version** ('' | ||
| | Clé du code d'un rapport (commits des deux dépôts, empreinte des paquets lib) | en tête du rapport ; en détail dans le manifeste ('' | | Clé du code d'un rapport (commits des deux dépôts, empreinte des paquets lib) | en tête du rapport ; en détail dans le manifeste ('' | ||
| - | | Historique d'un rapport (validation, | + | | Historique d'un rapport (validation, |
| | Livraisons | tags '' | | Livraisons | tags '' | ||
| | Qualification d'une version livrée | son rapport de release et **À propos > Logiciel** | | | Qualification d'une version livrée | son rapport de release et **À propos > Logiciel** | | ||