Publier une version
Publier, c’est produire des tags cohérents sur les cinq dépôts en une seule commande, depuis l’espace de co-développement.
Ce que chaque dépôt versionne
Section intitulée « Ce que chaque dépôt versionne »| Dépôt | Source de vérité | Règle |
|---|---|---|
darkone-nixos-framework | VERSION | Référence du train |
dnf-generator | Cargo.toml | Version propre, épinglée par le framework |
dnf-doc | package.json | MAJEUR.MINEUR du framework, correctif propre |
dnf-boilerplate, dnf-example | tag seul | Miroir du framework |
Le projet privé consommateur n’est jamais taggué : il reste en co-développement et sert de banc d’intégration permanent.
Le vocabulaire de commit
Section intitulée « Le vocabulaire de commit »Le changelog est généré à partir des messages de commit. Un type hors liste disparaît silencieusement des notes de version, donc la liste est vérifiée par l’intégration continue sur chaque pull request.
feat fix perf refactor docs test build ci chore security revertUn scope n’est jamais un type : feat(matrix): …, jamais matrix(admin): ….
| Type | Section du changelog |
|---|---|
feat | Added |
fix | Fixed |
security | Security |
perf, refactor, revert | Changed |
docs | Documentation |
sujet en drop ou remove | Removed |
chore, ci, test, build | non publié |
Les recettes
Section intitulée « Les recettes »| Recette | Effet |
|---|---|
just versions | Version, dernier tag et branche de chaque dépôt |
just changelog | Aperçu de la prochaine entrée, n’écrit rien |
just bump [niveau] | Version, changelog, commit et tag d’un dépôt |
just release [niveau] | Le train complet sur les cinq dépôts |
Le niveau vaut auto par défaut : git-cliff 🡕 déduit
le numéro suivant des commits. patch, minor, major ou un X.Y.Z littéral
forcent la décision.
just bump ne pousse jamais : il affiche la commande de poussée.
Le train de release
Section intitulée « Le train de release »just release s’exécute à la racine de l’espace de co-développement, qui doit
contenir les cinq dépôts.
-
Barrière qualité :
just check-all,just gen-testetjust simulate all. Les tests en machine virtuelle ne tournent pas dans l’intégration continue, donc un scénario rouge doit arrêter la publication ici. -
Générateur, s’il a bougé depuis son dernier tag. Il possède le schéma
etc/config.yaml, donc il part avant ce qui en dépend. -
Épinglage du tag du générateur dans
dnf/flake.nix, pour que le contrat entre framework et générateur se lise dans un diff, pas seulement dans le verrou. -
Framework :
VERSION,CHANGELOG.md, commit et tag. -
Documentation :
just codegenrégénère la référence depuis le framework, puis la version s’aligne sur la ligneMAJEUR.MINEUR, puis le site est construit et déployé. -
Boilerplate et exemple : le tag du framework est écrit dans leur
flake.nix,nix flake checkvalide, et leflake.lockest commité. C’est lui qui rend un clone reproductible.
Les garde-fous d’intégration continue
Section intitulée « Les garde-fous d’intégration continue »Sur un tag v*, release.yml refuse de publier si :
- le fichier
VERSIONne correspond pas au tag ; CHANGELOG.mdne contient pas de section pour cette version ;- le verrou pointe un
dnf-generatorpris sur une branche plutôt que sur une release publiée.
Les trois contrôles de ci.yml (tests unitaires, évaluation, lint) sont
rejoués via workflow_call, puis la section du changelog devient les notes de
la release GitHub.
Configuration partagée
Section intitulée « Configuration partagée »Un seul git-cliff 🡕 pour les trois dépôts qui
produisent un changelog, dans dnf/assets/release/cliff.toml. Le script
dnf/assets/scripts/just-bump.sh découvre la source de version du dépôt
(VERSION, Cargo.toml ou package.json), assemble le fichier autour du bloc
généré et préserve l’historique écrit à la main.