Structurer les sources de vérité doc-générables dans le repo
Versionnez les contrats avec le code applicatif. Placez REST sous /specs/openapi, GraphQL sous /schema/graphql et gRPC sous /proto; ces chemins donnent des filtres CI simples et ciblés.
| Surface | Source de vérité | Ce que la doc génère |
|---|---|---|
| REST | `/specs/openapi` | OpenAPI décrit chemins, opérations, réponses, exemples et schémas; la référence HTTP part de ce contrat (source: OpenAPI Specification 3.1 (OpenAPI Initiative, 2021)). |
| GraphQL | `/schema/graphql` | Le SDL et l’introspection exposent types, champs, arguments et directives sans parser le code serveur (source: GraphQL Specification (GraphQL Foundation, consulted 2026-07)). |
| gRPC | `/proto` | Les `.proto` portent services, méthodes, messages et commentaires qui alimentent la référence service/méthodes (source: Protocol Buffers v3 Language Guide (Google, consulted 2026-07)). |
Gardez les commentaires au plus près des symboles exportés: fonctions publiques, structs, modules, messages Protobuf, champs GraphQL. Un générateur fiable lit le symbole et sa description dans le même diff.
Pipeline CI/CD: build, préviews et déploiement des docs
Un workflow GitHub Actions dédié déclenche la chaîne docs sur push et pull_request, puis exécute lint, build et publication sans dépendre du langage applicatif (source: GitHub Actions documentation (consulted 2026-07)).
Orchestrer par dossier source
Déclarez une matrice par zone documentaire: specs, proto, packages/*. Chaque entrée lance les mêmes commandes, mais sur un chemin isolé. Le feedback arrive dès qu’un dossier finit, sans attendre tout le dépôt.
on: [push, pull_request]
jobs:
docs:
strategy:
matrix:
path: [specs, proto, packages/*]
Construire et archiver le site
Le job produit des fichiers HTML statiques, puis les archive comme artefacts CI. Servez ces artefacts dans un site Docusaurus pour garder navigation, recherche et pages générées au même endroit (source: Docusaurus documentation (Meta Open Source, consulted 2026-07)).
Séparer preview et stable
Chaque pull_request publie un preview éphémère lié à la PR. Seul push sur la branche par défaut déploie la version stable consultée par l’équipe et les intégrations.
Accélérer sans masquer la dérive
Cachez les dépendances du générateur et invalidez le cache avec les chemins modifiés: specs/**, proto/**, packages/**, configuration Docusaurus et lockfile. Un changement de contrat force donc un rebuild complet du périmètre touché.
Générer la référence d’API depuis REST, GraphQL et gRPC
La référence générée doit lire uniquement les contrats versionnés du repo: openapi.yaml, schema.graphql, JSON d’introspection et fichiers .proto.
Validez le fichier openapi.yaml avec les éléments attendus du contrat: exemples, réponses et schémas de composants (source: OpenAPI Specification 3.1 (OpenAPI Initiative, 2021)). Le rendu doit produire les pages endpoints, modèles et codes d’erreur déclarés dans le contrat.
Exportez schema.graphql et un JSON d’introspection depuis le serveur CI. Produisez les tables de types, queries et mutations à partir du schéma typé (source: GraphQL Specification (GraphQL Foundation, consulted 2026-07)).
Compilez les .proto en descripteurs, puis générez la doc des services, méthodes, messages et options. Gardez les commentaires de champs dans la sortie (source: Protocol Buffers v3 Language Guide (Google, consulted 2026-07)).
Placez des exemples exécutables à côté des opérations générées:
curl -sS ${API_URL}/users/${USER_ID}
query User($id: ID!) { user(id: $id) { id email } }
grpcurl -plaintext -d '{}' ${GRPC_HOST} users.UserService/ListUsers
Les badges doivent venir des métadonnées: deprecated: true et une extension de stabilité côté OpenAPI, directive @deprecated côté GraphQL, option de dépréciation ou option custom côté .proto.
Contrôler la dérive: gates de couverture et diff de contrats
Le gate principal compare le contrat généré au contrat de référence. Si le diff OpenAPI, SDL GraphQL ou .proto supprime un champ, renomme un enum, durcit une validation ou change un type, le job échoue sauf si la PR porte le marqueur breaking-change.
La branche principale doit refuser les merges tant que docs-contract-diff, docs-coverage et docs-examples ne sont pas verts. Configurez ces jobs comme checks requis dans la protection de branche (source: GitHub Actions documentation (consulted 2026-07)).
Gates à exécuter sur chaque PR
Mesurez la couverture seulement sur les fichiers modifiés: symboles exportés, endpoints, queries, mutations, messages et services doivent avoir un commentaire exploitable. Le seuil vient du repo, par exemple docs/coverage.yml, pas du script CI.
Validez chaque exemple versionné contre le contrat courant. Une request exemple doit parser, respecter les champs requis et produire une réponse conforme au schéma attendu; sinon le job bloque.
Diff révisable
Générez un changelog de docs attaché à la PR: contrats modifiés, symboles sans commentaire, exemples revalidés ou rejetés. Le reviewer lit l’écart documentaire dans le même diff que le code.
Publication, versioning et contributions côté docs
Publier par release, pas par branche
Taguez le site de docs avec la même release que l’API ou le SDK publié. Le sélecteur de version affiche alors la documentation correspondant au client installé, au lieu de mélanger main, beta et versions maintenues. Docusaurus fournit un mécanisme de versioning des docs et un sélecteur associé (source: Docusaurus documentation (Meta Open Source, consulted 2026-07)).
Conservez les anciennes versions en lecture seule. Une correction de typo passe encore, mais aucun changement de contrat ne doit être backporté sans release produit associée.
Rendre la contribution triviale
Activez le lien « Modifier cette page » vers le fichier Markdown, MDX ou généré qui sert de source. Un dev corrige un exemple cassé depuis la page publiée; un PM ajuste une description sans chercher le chemin dans le repo.
Le lien d’édition doit pointer vers la source versionnée, pas vers l’artefact HTML publié.
Fermer la boucle après déploiement
Générez l’index de recherche et les URLs canoniques pendant le build. Après déploiement, déclenchez les mises à jour prévues par votre pile de recherche et d’analytics avec les URLs finales.
Ajoutez make docs au repo pour reproduire localement le rendu CI. La preview de PR valide navigation, recherche, liens canoniques et version affichée avant merge.
Continue reading
Meilleures alternatives à Kapa.ai pour les entreprises
Un plan court et actionnable pour sélectionner une alternative à Kapa.ai côté entreprise: matrice d’architecture, shortlist par cas d’usage, tests, contrat et mise en prod.
Guide pour choisir une alternative à Mintlify sans regret
Un cadre concret pour comparer GitBook, Docusaurus et co., estimer le TCO, et planifier une migration de docs sans perte de SEO ni de workflow.
Comparaison d'Intercom Fin et des solutions de support
Un cadre technique concret pour choisir entre Intercom Fin et les solutions de support, avec un plan d’essai de 14 jours et des métriques actionnables.