| .. | ||
| src | ||
| README.md | 3 kB | |
| dagger.json | 115 B | |
| pyproject.toml | 381 B |
README.md
Module Dagger — girust-doc
Module Dagger (Python SDK) qui construit la documentation gitrust en mode Power
(convention gitrust : .dagger/ à la racine du dépôt → dagger call -m .dagger/ <fn>).
Prérequis
- Dagger CLI ≥
v0.14 - Docker ou Podman accessible (moteur conteneur)
- Python ≥ 3.11 (seul le conteneur Dagger en a besoin, pas l'hôte)
Fonctions exposées
| Fonction | Rôle | Sortie |
|---|---|---|
base | Image outillée (Rust + Node + gettext + mdBook + preprocessors) | Container |
build | Construit UNE langue (par défaut fr) | Directory |
build-all | Construit les 6 langues + landing page Accept-Language | Directory |
lint | markdownlint-cli2 sur tous les .md | stdout |
validate-mermaid | mmdc sur chaque .mmd de diagrams/ | stdout |
ci | Pipeline complet : lint + validate-mermaid + build-all | Directory |
Exemples d'utilisation
Construire toutes les langues et exporter dans ./dist/
dagger call -m .dagger/ build-all --source=. export --path=./dist
Construire uniquement l'anglais
dagger call -m .dagger/ build --source=. --lang=en export --path=./dist/en
Lint seul (échoue si violations)
dagger call -m .dagger/ lint --source=.
Pipeline CI complet
dagger call -m .dagger/ ci --source=. export --path=./public
Obtenir un terminal interactif dans l'image de build
dagger call -m .dagger/ base terminal
Intégration avec gitrust
Quand ce dépôt est poussé sur une instance gitrust, le runner CI détecte
automatiquement .dagger/ et exécute :
dagger call -m .dagger/ ci
Pour contrôler précisément ce que gitrust-ci appelle, ajouter dans le
dépôt un .gitrust-ci.yml minimal qui délègue à Dagger :
# .gitrust-ci.yml language: custom power_mode: true entrypoint: "dagger call -m .dagger/ ci"
Structure du dossier
.dagger/ ├── dagger.json # métadonnées du module (sdk=python) ├── pyproject.toml # dépendances Python + config dagger ├── README.md # ce fichier └── src/ └── girust_doc/ └── __init__.py # implémentation du module
Développement local du module
# Générer les types Dagger (auto-complétion) dagger develop -m .dagger/ # Vérifier qu'une fonction est bien exposée dagger -m .dagger/ functions # Tester sans export (dry-run côté conteneur) dagger call -m .dagger/ ci --source=.
Décisions d'architecture
- Python plutôt que Go : aligné avec l'écosystème gitrust (le
ci-enginede gitrust est lui-même écrit en Python), et pas besoin de Go installé localement. - Image
rust:1.82-slim-bookworm: base officielle Rust pour installer mdBook et mdBook-mermaid viacargo install. Node.js et npm ajoutés via apt pourmarkdownlint-cli2et@mermaid-js/mermaid-cli. - Cache cargo : volume Dagger monté sur
/usr/local/cargo/registrypour éviter de re-télécharger les crates à chaque CI. - Exclusions :
book/,node_modules/,.git/,.dagger/ne sont pas envoyés au conteneur (gain de temps et d'espace).
Voir aussi
- Documentation Dagger : https://docs.dagger.io/
- Module Dagger reference : https://docs.dagger.io/reference/python
- gitrust CI Power Mode : voir
administration_manual/explanation/ci-dagger.md
GitRust