Motivation
Les PDFs pèsent 1,7 Go (68 %) du contenu statique pour seulement 136 fichiers, et constituent l'essentiel du poids de :
- l'historique git (
.git = 2,1 Go) ;
- l'artifact déployé sur GitHub Pages (
site/build = 2,6 Go) ;
- le temps d'upload du workflow
deploy.yml.
Or les PDFs sont du contenu figé : une fois publié, le PDF d'une fiche ne change plus (sauf erratum rare). Les garder dans le repo principal fait payer le coût de l'historique sans aucun bénéfice. Trois PDFs > 50 Mo (Unplugged) sont déjà exclus via .gitignore faute de mieux — preuve que la limite a déjà été atteinte.
Objectif
Externaliser tous les PDFs dans un second repo wikilab-assets déployé sur un sous-domaine GitHub Pages, et faire pointer les liens du site Docusaurus vers ce domaine.
Architecture cible
wikilab/ ← repo actuel
├── site/
│ ├── docs/ ← inchangé
│ ├── static/img/ ← inchangé (potentiellement migré dans une 2e phase)
│ └── …
└── … ← repo principal, ~150 Mo après migration
wikilab-assets/ ← nouveau repo, ~1,7 Go
├── pdf/
│ ├── lets-steam/
│ ├── mimesis/
│ └── …
├── .github/workflows/
│ └── deploy-pages.yml ← déploie sur Pages depuis `pdf/`
└── README.md
DNS / Pages :
assets.wikilab.labaixbidouille.com → wikilab-assets via gh-pages
Les fiches référencent https://assets.wikilab.labaixbidouille.com/pdf/<projet>/<fiche>.pdf au lieu du chemin local /pdf/<projet>/<fiche>.pdf.
Plan de migration
Étape 1 — Préparation (avant migration)
- Inventaire : générer la liste complète des PDFs présents + leur usage (grep des chemins dans les fiches).
- Décision sur l'historique : garder dans
wikilab-assets un commit initial unique « import depuis wikilab@ », ou conserver l'historique git ? La purge du legacy dans wikilab se fera quoi qu'il en soit via git filter-repo.
- Choix du DNS :
- Sous-domaine de
wikilab.labaixbidouille.com : assets.wikilab.… (simple, cohérent).
- Ou racine
assets.labaixbidouille.com (plus court).
- Helper Docusaurus : composant
<PdfLink> ou variable ASSETS_BASE_URL qui préfixe automatiquement les liens PDF. Permet de switcher local ↔ prod sans réécriture en masse.
Étape 2 — Création du repo wikilab-assets
- Créer le repo
LabAixBidouille/wikilab-assets.
- Copier l'arborescence
site/static/pdf/ à la racine du nouveau repo, sous pdf/.
- Workflow Pages minimaliste qui sert le dossier
pdf/ à la racine du sous-domaine.
- Test :
curl sur 5-10 URLs après déploiement.
Étape 3 — Réécriture des liens dans wikilab
- Remplacer les
<a href="/pdf/…"> par <PdfLink href="…"> (ou équivalent variable).
- Tester en local avec un override d'env (
ASSETS_BASE_URL=http://localhost:3001 + mini serveur statique sur les PDFs locaux pour la preview).
- Lychee : ajouter
assets.wikilab.… à la config pour vérifier que les liens externes ne cassent pas.
Étape 4 — Purge du legacy
- Supprimer
site/static/pdf/ dans wikilab.
git filter-repo pour réécrire l'historique et virer les blobs PDFs (gain attendu sur .git : ~1 Go).
- Force-push annoncé sur
main (opération destructive, demander explicitement avant d'agir).
- Communiquer aux contributeur·rices pour re-cloner.
Étape 5 — Documentation et CI
- Mettre à jour
CLAUDE.md, CONTRIBUTING.md, CONVENTIONS.md : nouveau workflow d'ajout de PDF (PR sur wikilab-assets).
- Adapter
links.yml (Lychee) pour qu'il check aussi assets.wikilab.….
- Retirer la mention « 3 PDFs > 50 Mo exclus » qui devient obsolète.
Gains attendus
| Métrique |
Avant |
Après |
Gain |
site/static/ |
2,5 Go |
847 Mo |
-1,7 Go |
site/build/ |
2,6 Go |
~950 Mo |
-1,7 Go |
.git/ (après filter-repo) |
2,1 Go |
~1 Go |
-1 Go |
Temps de git clone |
plusieurs minutes |
< 30 s |
substantiel |
| Temps d'upload deploy.yml |
élevé |
nettement réduit |
substantiel |
| Réintégration des 3 PDFs Unplugged exclus |
non |
oui |
gain qualitatif |
Risques et points d'attention
- DX local : sans fallback, les liens PDF cassent en dev local. À gérer via composant
<PdfLink> qui pointe sur les PDFs locaux quand process.env.NODE_ENV === 'development' + miroir local optionnel.
- Cache navigateur / liens externes : les anciens liens
wikilab.labaixbidouille.com/pdf/… doivent rediriger vers le nouveau domaine. À configurer côté Pages via redirect rules, ou laisser 404 si on accepte le bris.
- Workflow contributeur : un ajout de fiche avec PDF devient 2 PRs (une dans chaque repo). À automatiser au minimum par un template d'issue cross-repo.
- Sécurité supply-chain : un repo séparé exige les mêmes branch protections que
wikilab.
Décisions à prendre avant kickoff
- Conserver l'historique git des PDFs dans
wikilab-assets, ou commit initial unique ?
- Sous-domaine définitif (
assets.wikilab.… ou assets.labaixbidouille.…) ?
- Purge du legacy dans
wikilab immédiate, ou différée (le temps de valider le nouveau workflow) ?
- Migrer aussi les images dans un second temps (gain supplémentaire ~700 Mo) ou les garder dans
wikilab ?
Critères d'acceptation
Hors scope (à traiter dans des issues séparées)
Motivation
Les PDFs pèsent 1,7 Go (68 %) du contenu statique pour seulement 136 fichiers, et constituent l'essentiel du poids de :
.git= 2,1 Go) ;site/build= 2,6 Go) ;deploy.yml.Or les PDFs sont du contenu figé : une fois publié, le PDF d'une fiche ne change plus (sauf erratum rare). Les garder dans le repo principal fait payer le coût de l'historique sans aucun bénéfice. Trois PDFs > 50 Mo (Unplugged) sont déjà exclus via
.gitignorefaute de mieux — preuve que la limite a déjà été atteinte.Objectif
Externaliser tous les PDFs dans un second repo
wikilab-assetsdéployé sur un sous-domaine GitHub Pages, et faire pointer les liens du site Docusaurus vers ce domaine.Architecture cible
Les fiches référencent
https://assets.wikilab.labaixbidouille.com/pdf/<projet>/<fiche>.pdfau lieu du chemin local/pdf/<projet>/<fiche>.pdf.Plan de migration
Étape 1 — Préparation (avant migration)
wikilab-assetsun commit initial unique « import depuis wikilab@ », ou conserver l'historique git ? La purge du legacy danswikilabse fera quoi qu'il en soit viagit filter-repo.wikilab.labaixbidouille.com:assets.wikilab.…(simple, cohérent).assets.labaixbidouille.com(plus court).<PdfLink>ou variableASSETS_BASE_URLqui préfixe automatiquement les liens PDF. Permet de switcher local ↔ prod sans réécriture en masse.Étape 2 — Création du repo
wikilab-assetsLabAixBidouille/wikilab-assets.site/static/pdf/à la racine du nouveau repo, souspdf/.pdf/à la racine du sous-domaine.curlsur 5-10 URLs après déploiement.Étape 3 — Réécriture des liens dans
wikilab<a href="/pdf/…">par<PdfLink href="…">(ou équivalent variable).ASSETS_BASE_URL=http://localhost:3001+ mini serveur statique sur les PDFs locaux pour la preview).assets.wikilab.…à la config pour vérifier que les liens externes ne cassent pas.Étape 4 — Purge du legacy
site/static/pdf/danswikilab.git filter-repopour réécrire l'historique et virer les blobs PDFs (gain attendu sur.git: ~1 Go).main(opération destructive, demander explicitement avant d'agir).Étape 5 — Documentation et CI
CLAUDE.md,CONTRIBUTING.md,CONVENTIONS.md: nouveau workflow d'ajout de PDF (PR surwikilab-assets).links.yml(Lychee) pour qu'il check aussiassets.wikilab.….Gains attendus
site/static/site/build/.git/(après filter-repo)git cloneRisques et points d'attention
<PdfLink>qui pointe sur les PDFs locaux quandprocess.env.NODE_ENV === 'development'+ miroir local optionnel.wikilab.labaixbidouille.com/pdf/…doivent rediriger vers le nouveau domaine. À configurer côté Pages via redirect rules, ou laisser 404 si on accepte le bris.wikilab.Décisions à prendre avant kickoff
wikilab-assets, ou commit initial unique ?assets.wikilab.…ouassets.labaixbidouille.…) ?wikilabimmédiate, ou différée (le temps de valider le nouveau workflow) ?wikilab?Critères d'acceptation
wikilab-assetscréé, peuplé, déployé sur Pages.wikilab< 1 Go.wikilabETwikilab-assets.CLAUDE.md,CONTRIBUTING.md) mises à jour.Hors scope (à traiter dans des issues séparées)