meta données pour cette page
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| certif:procedure:develop:chainequalificationlivraison [2026/09/25 11:31] – créée 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 34: | Ligne 38: | ||
| La même personne peut valider et recetter (équipe trop petite pour les « quatre yeux »). | La même personne peut valider et recetter (équipe trop petite pour les « quatre yeux »). | ||
| - | ===== 2. Qualification | + | ===== Cheminements pas à pas ===== |
| + | |||
| + | Chaque cas ci-dessous renvoie, pour le détail, aux sections « Les étapes en détail » et « Les portes ». | ||
| + | |||
| + | ==== Cas 1 : faire une beta (cas normal) ==== | ||
| + | |||
| + | Point de départ : le travail est fusionné sur la branche de version (''/ | ||
| + | |||
| + | - **Pousser** la branche de version de // | ||
| + | - **Fermer la fenêtre console d' | ||
| + | - Double-clic sur '' | ||
| + | - **Rester devant le poste** pendant la reconstruction de // | ||
| + | - **Ne rien commiter pendant le run**, dans aucun des deux dépôts. | ||
| + | - Dans la carto, écran **Rapports de version** (connecté) : ouvrir '' | ||
| + | - Double-clic sur '' | ||
| + | - Répondre **'' | ||
| + | - Copier '' | ||
| + | - Passer au **cas 2** (recette et release) ou, si un défaut est trouvé, au **cas 3**. | ||
| + | |||
| + | ==== Cas 2 : recetter la beta et livrer la release client ==== | ||
| + | |||
| + | Point de départ : une beta livrée par le cas 1 et déployée sur le serveur de test. | ||
| + | |||
| + | - 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 **Recette de la beta '' | ||
| + | - 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. | ||
| + | - Double-clic sur '' | ||
| + | - Copier '' | ||
| + | |||
| + | ==== Cas 3 : un défaut est trouvé après la beta ==== | ||
| + | |||
| + | 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 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 ''/ | ||
| + | - 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 ==== | ||
| + | |||
| + | Un échec nouveau par rapport au dernier rapport validé, ou un résultat inexploitable. | ||
| + | |||
| + | - Dans la carto, **Refusé**, | ||
| + | - Corriger (branche perso, ''/ | ||
| + | - 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 au contraire **Valider avec réserves**, | ||
| + | |||
| + | ==== Cas 5 : la qualification a échoué en cours de route ==== | ||
| + | |||
| + | Serveurs qui ne démarrent pas, run interrompu, poste redémarré… | ||
| + | |||
| + | - Sans résultats des tests d' | ||
| + | - 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. | ||
| + | |||
| + | ==== Cas 6 : démarrer le cycle d'une nouvelle version ==== | ||
| + | |||
| + | - Créer la nouvelle branche de version (ex. '' | ||
| + | - Basculer le poste sur ces branches ('' | ||
| + | - Travailler, fusionner (''/ | ||
| + | |||
| + | ==== Cas 7 : corriger une version déjà livrée au client ==== | ||
| + | |||
| + | Même chaîne, sur la branche de la version en ligne. | ||
| + | |||
| + | - Basculer sur cette version : '' | ||
| + | - 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 '' | ||
| + | - Reporter ensuite le correctif sur la version en cours de développement (''/ | ||
| + | |||
| + | ==== Cas 8 : urgence, livrer sans la chaîne ==== | ||
| + | |||
| + | À réserver aux vraies urgences (serveur Nono injoignable, | ||
| + | affichée **« Version non qualifiée »**. | ||
| + | |||
| + | - Bump : '' | ||
| + | - Rapport de release **sans** qualification : '' | ||
| + | - Build : '' | ||
| + | - Commit '' | ||
| + | - 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. | ||
| + | |||
| + | ==== Cas 9 : une porte refuse ==== | ||
| + | |||
| + | - Lire le motif affiché : chaque refus dit quoi faire (tableau « Messages fréquents » ci-dessous). | ||
| + | - Pour revérifier sans rien modifier : '' | ||
| + | - **Ne jamais contourner une porte** : si le blocage est injustifié, | ||
| + | |||
| + | ===== Les étapes en détail ===== | ||
| + | |||
| + | ==== Qualification | ||
| **But :** produire le rapport qualité de la prochaine version, sur un code identifié sans ambiguïté. | **But :** produire le rapport qualité de la prochaine version, sur un code identifié sans ambiguïté. | ||
| Ligne 42: | 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 49: | 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 64: | Ligne 154: | ||
| un nouveau rapport est créé ; les précédents restent consultables, | un nouveau rapport est créé ; les précédents restent consultables, | ||
| - | ===== 3. 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 77: | Ligne 169: | ||
| sans connexion et constitue la pièce qualité (dossier NF Logiciel) de la version. | sans connexion et constitue la pièce qualité (dossier NF Logiciel) de la version. | ||
| - | ===== 4. Beta ===== | + | ==== Beta ==== |
| Double-clic sur '' | Double-clic sur '' | ||
| - 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 y sont **repris** de la qualification (plus | + | - génère le rapport de release : les tests unitaires |
| - | rejoués), avec un renvoi vers le rapport qualité ; | + | |
| - 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 | ||
| + | l' | ||
| Reste à **copier** '' | Reste à **copier** '' | ||
| - | ===== 6. Recette de la beta ===== | + | ==== Recette de la beta ==== |
| Une fois la beta déployée, dans la carto, écran **Rapports de version**, sur le rapport qualité de la | Une fois la beta déployée, dans la carto, écran **Rapports de version**, sur le rapport qualité de la | ||
| Ligne 110: | Ligne 201: | ||
| **Seule une recette conforme ouvre la release client.** Une recette non conforme impose une | **Seule une recette conforme ouvre la release client.** Une recette non conforme impose une | ||
| - | correction, donc une nouvelle qualification et une nouvelle beta. | + | correction, donc une nouvelle qualification et une nouvelle beta (cas 3). |
| - | ===== 7. Release client | + | ==== Release client ==== |
| Double-clic sur '' | Double-clic sur '' | ||
| Ligne 130: | 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 149: | Ligne 236: | ||
| | aucun rapport de qualification … pour le code actuel | lancer '' | | aucun rapport de qualification … pour le code actuel | lancer '' | ||
| | le rapport … n'est pas encore validé | le valider dans la carto | | | le rapport … n'est pas encore validé | le valider dans la carto | | ||
| + | | le rapport … a été refusé | cas 4 | | ||
| | … commit(s) non poussé(s) | pousser la branche | | | … commit(s) non poussé(s) | pousser la branche | | ||
| | modifications locales non commitées | commiter (''/ | | modifications locales non commitées | commiter (''/ | ||
| | paquets logeas-lib installés différents de ceux du run qualifié | relancer la qualification | | | paquets logeas-lib installés différents de ceux du run qualifié | relancer la qualification | | ||
| - | | logeas-web a reçu des commits depuis la beta | requalifier, | + | | logeas-web a reçu des commits depuis la beta | cas 3 : requalifier, |
| - | | la beta … n'a pas été recettée | faire la recette dans la carto | | + | | aucun rapport qualifié n'a ouvert la beta … | la beta n'a pas été inscrite dans la trace (push refusé ?) : lancer la commande '' |
| - | | serveur Nono injoignable (manifeste ou ApprobDoc illisible) | attendre son retour : aucune livraison n'est possible sans lui | | + | | la beta … n'a pas été recettée | faire la recette dans la carto (cas 2) | |
| - | + | | la recette de la beta … n'est pas conforme | cas 3 | | |
| - | ===== Correctif après une beta ===== | + | | serveur Nono injoignable (manifeste ou ApprobDoc illisible) | attendre son retour : aucune livraison n'est possible sans lui (en vraie urgence : cas 8) | |
| - | + | ||
| - | Règle stricte : **tout commit après une beta, même un correctif d'une ligne, impose une nouvelle | + | |
| - | qualification et une nouvelle beta** | + | |
| - | 15 minutes après la confirmation UAC) : le coût est faible, et une exception affaiblirait toute la chaîne. | + | |
| - | + | ||
| - | ===== En cas d'urgence : version « sauvage » ===== | + | |
| - | + | ||
| - | Un build hors chaîne reste possible ('' | + | |
| - | **« Version non qualifiée »** (tests unitaires rejoués au moment du build, aucun test d' | + | |
| - | vérifié), et l' | + | |
| - | aux urgences, et à régulariser par une qualification dès que possible. | + | |
| ===== Traçabilité : où trouver quoi ===== | ===== Traçabilité : où trouver quoi ===== | ||
| Ligne 174: | 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** | | ||
| Ligne 185: | Ligne 262: | ||
| | '' | | '' | ||
| | '' | | '' | ||
| + | | '' | ||
| | '' | | '' | ||
| | '' | | '' | ||