Aller au contenu

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.

DépôtSource de véritéRègle
darkone-nixos-frameworkVERSIONRéférence du train
dnf-generatorCargo.tomlVersion propre, épinglée par le framework
dnf-docpackage.jsonMAJEUR.MINEUR du framework, correctif propre
dnf-boilerplate, dnf-exampletag seulMiroir 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 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 revert

Un scope n’est jamais un type : feat(matrix): …, jamais matrix(admin): ….

TypeSection du changelog
featAdded
fixFixed
securitySecurity
perf, refactor, revertChanged
docsDocumentation
sujet en drop ou removeRemoved
chore, ci, test, buildnon publié
RecetteEffet
just versionsVersion, dernier tag et branche de chaque dépôt
just changelogAperç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.

just release s’exécute à la racine de l’espace de co-développement, qui doit contenir les cinq dépôts.

  1. Barrière qualité : just check-all, just gen-test et just 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.

  2. 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.

  3. É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.

  4. Framework : VERSION, CHANGELOG.md, commit et tag.

  5. Documentation : just codegen régénère la référence depuis le framework, puis la version s’aligne sur la ligne MAJEUR.MINEUR, puis le site est construit et déployé.

  6. Boilerplate et exemple : le tag du framework est écrit dans leur flake.nix, nix flake check valide, et le flake.lock est commité. C’est lui qui rend un clone reproductible.

Sur un tag v*, release.yml refuse de publier si :

  • le fichier VERSION ne correspond pas au tag ;
  • CHANGELOG.md ne contient pas de section pour cette version ;
  • le verrou pointe un dnf-generator pris 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.

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.