Aller au contenu

Étude de cas · Institutionnel

Reprise, maintenance (TMA) et évolutions d’un site institutionnel Drupal sous DSFR

Comment reprendre, maintenir et faire évoluer un site institutionnel Drupal DSFR existant — sans casser la production.

Rôle : Reprise de code, TMA & évolutions — en sous-traitance Client : Un programme public national (ministère)
0erreur PHPCS tolérée (CI bloquante)
10+contrôles qualité par commit
100 %config versionnée par environnement
RGAAaccessibilité par le DSFR
Rôle tenu
Reprise de code, TMA & évolutions — en sous-traitance
Client final
Un programme public national (ministère)
Socle technique
Drupal 9 · PHP 8 · DSFR · Docker
Périmètre
Audit de reprise, montées de version & patchs, qualité/CI, tests, configuration multi-environnements, accessibilité, RGPD, recherche
Drupal 9DSFRPHP 8GrumPHPPHPCSPHPUnitBehatGitLab CIconfig_splitSentry
En résumé : reprendre un site institutionnel Drupal existant sous DSFR, le maintenir et le faire évoluer sans jamais casser la production — c’est un métier à part entière. Sur un socle Drupal 9 conforme au Système de Design de l’État, nous avons tenu la reprise de code, la TMA et les évolutions : audit de l’existant, montées de version et patchs tracés, chaîne qualité jouée à chaque commit, tests et intégration continue, configuration déployée par environnement, accessibilité RGAA, RGPD et supervision des erreurs. Rôle tenu : reprise, maintenance et évolution, en sous-traitance.

Reprendre du code qu’on n’a pas écrit, sans tout casser

Une agence a rarement besoin qu’on réécrive son site : elle a besoin d’un renfort capable de reprendre l’existant et de le tenir. C’est le point de départ de ce projet — un site institutionnel Drupal déjà en ligne, riche, avec ses habitudes et sa dette. Avant toute modification, on audite : version réelle de Drupal et des dépendances, patchs en place et leur traçabilité, état de la configuration (peut-on déployer sans surprise ?), dette d’accessibilité, et présence — ou absence — d’une chaîne qualité. Le livrable de départ n’est pas du code, c’est un diagnostic priorisé : ce qui est risqué, ce qui est urgent, ce qui peut attendre.

Le socle : un Drupal 9 sous DSFR, remis à niveau

Le site repose sur un socle Drupal 9 industrialisé et un thème sur-mesure conforme au DSFR. Le front n’est pas un thème plaqué : c’est une base de composants Twig et de styles SCSS compilés par une chaîne d’outillage, adossée à un styleguide qui documente les composants. Reprendre proprement, c’est d’abord comprendre ce modèle : où vivent les composants, comment ils sont mappés sur les champs Drupal, comment le DSFR est versionné. Une fois cette carte établie, faire évoluer une page ou en créer une nouvelle devient sûr et rapide — pas un pari.

La qualité, outillée à chaque commit

Sur un projet qu’on reprend à plusieurs mains, la qualité ne peut pas reposer sur la discipline individuelle : elle doit être automatique. Chaque commit déclenche une batterie de contrôles orchestrés par GrumPHP : PHPCS aux standards Drupal (Coder), PHPMD (complexité, code mort), détection de copier-coller (PHPCPD), lint PHP / YAML / JSON, normalisation du composer.json, et même des règles d’hygiène — interdiction des var_dump, dd() ou console.log oubliés, convention de nommage des branches, message de commit qui doit référencer un ticket. Le seuil est clair : zéro erreur de style tolérée. Résultat : un code homogène quel que soit l’auteur, et des revues qui parlent du métier plutôt que des points-virgules.

Tests et intégration continue

Reprendre un site sans filet, c’est déployer à l’aveugle. On s’appuie sur des tests automatisésPHPUnit pour la logique, Behat pour les parcours fonctionnels — exécutés en intégration continue (GitLab CI) avec suivi de la couverture. Chaque branche passe le pipeline avant fusion : la CI est le garde-fou qui transforme « ça marche chez moi » en « c’est vérifié ». C’est aussi ce qui rend une TMA soutenable dans la durée : on peut corriger et faire évoluer sans craindre de casser un parcours existant à l’autre bout du site.

Déployer sans surprise : la configuration par environnement

Un site public vit sur plusieurs environnements — développement, recette, production — et se gère à plusieurs mains. La configuration est versionnée et pilotée par environnement (config_split / config_ignore) : ce qui doit différer entre la recette et la prod est isolé proprement, le reste est déployé de façon reproductible. L’environnement local est conteneurisé (Docker) et outillé par des tâches automatisées (Phing) — import de base, synchronisation des fichiers, réinitialisation — pour qu’un nouveau développeur soit opérationnel en minutes, pas en journées. Déployer cesse d’être un moment de tension.

Maintenir les dépendances : montées de version et patchs tracés

Le cœur d’une TMA, c’est de garder le socle à jour — pour la sécurité comme pour la pérennité. Les dépendances sont gérées par Composer, et quand un module de la communauté présente un défaut, on n’édite jamais son code « dans le tas » : on applique un patch tracé (composer-patches), documenté et rejouable à chaque installation. C’est ce qui distingue un site maintenable d’une boîte noire : une montée de version ne fait pas disparaître les correctifs, et n’importe quel développeur peut comprendre pourquoi tel patch est là. Les correctifs utiles sont, quand c’est possible, remontés en amont à la communauté.

Accessibilité DSFR, RGPD et observabilité

Trois exigences non négociables sur un site public, tenues par le socle plutôt que rattrapées à la fin. Accessibilité (RGAA) : le markup vient de composants DSFR normalisés et documentés dans le styleguide, l’accessibilité est donc produite à la source. RGPD : gestion du consentement (bandeau et préférences), politique de mots de passe, protection anti-spam des formulaires, envoi d’e-mails maîtrisé (et neutralisé hors production pour ne jamais écrire à un vrai usager par erreur). Observabilité : les erreurs de production sont remontées en continu vers Sentry et journalisées, pour être vues et corrigées avant que l’usager ne les subisse.

Recherche et éditorialisation

Un site institutionnel riche doit rester navigable. La recherche s’appuie sur Search API et des facettes pour filtrer de gros volumes de contenu, avec une page de résultats dédiée. Côté édition, le contenu est monté à partir de composants réutilisables (Paragraphs), de listes d’entités configurables et d’un affichage maîtrisé — l’équipe éditoriale assemble ses pages à partir de blocs validés, sans redemander du développement à chaque campagne. Le référencement technique (métadonnées, URL propres, redirections, plan de site) est intégré au socle, pas ajouté après coup.

Reprendre ou faire évoluer votre Drupal DSFR

C’est la question qui intéresse une agence : peut-on confier un Drupal DSFR existant et le voir tenu proprement ? Oui — parce que la reprise est outillée. On audite la version réelle, les patchs, la configuration et la dette d’accessibilité ; on livre un plan priorisé ; puis on prend la main sur la maintenance et les évolutions, sous votre marque. Le site reste reprenable après nous : code homogène, configuration versionnée, tests, CI, dépendances tracées. C’est exactement ce que cherche une agence qui délègue une TMA.

Questions fréquentes

Reprenez-vous un site Drupal DSFR que nous n’avons pas conçu ?

Oui, c’est un de nos cas d’intervention les plus fréquents. On audite la version de Drupal et du DSFR, les patchs en place, la gestion de configuration et la dette d’accessibilité, puis on livre un diagnostic priorisé avant de prendre la main — sans réécrire ce qui fonctionne.

Comment garantissez-vous qu’une évolution ne casse rien ?

Par l’outillage : chaîne qualité à chaque commit (PHPCS, PHPMD, détection de copier-coller), tests PHPUnit et Behat, et intégration continue qui bloque toute fusion non conforme. Le déploiement s’appuie sur une configuration versionnée et par environnement.

Une montée de version Drupal fait-elle perdre les correctifs ?

Non. Les correctifs de modules communautaires sont appliqués sous forme de patchs tracés, documentés et rejoués automatiquement à chaque installation. Une montée de version ne les fait pas disparaître, et n’importe quel développeur comprend pourquoi ils sont là.

Travaillez-vous en marque blanche pour une agence ?

Oui. La majorité de nos interventions publiques se font en sous-traitance : nous tenons le rôle technique — reprise, TMA, évolutions — vous gardez la relation client.

En clair : reprendre un Drupal DSFR existant, ce n’est pas « bidouiller » un site livré par d’autres. C’est de l’ingénierie : audit, qualité outillée, tests, configuration maîtrisée et dépendances tracées. Fait proprement, le site reste sûr, à jour et — surtout — reprenable.

0erreur de style tolérée — PHPCS bloquant en intégration continue
10+contrôles qualité automatiques à chaque commit (GrumPHP)
100%configuration versionnée et déployée par environnement
f
FullDo

Studio de développement web full-stack & IA — Drupal, DSFR, accessibilité.