Skip to content

Documentation @spektrum/release-util

Documentation vivante du projet, en français. Ces pages décrivent l'état actuel de l'outil — elles évoluent avec le code et ne sont pas un journal de décisions.

Pour le pourquoi du workflow (modèle trunk-based, invariant à un seul commit, correction en avant, politique de hotfix), voir RELEASING.md. Pour le pitch « installation + à quoi ça sert », voir le README.md racine.


Vue d'ensemble

@spektrum/release-util est un binaire unique (release-util) qui coupe des releases « façon Spektrum ». Le flux local (validation → version → branche → changelog via release-it → push → ouverture de MR GitLab) ne nécessite aucun token d'API GitLab : il s'appuie sur l'authentification git existante et ouvre les MR via les push options GitLab. Le tag, la publication et les badges sont délibérément laissés à la CI — c'est ce qui garde le flux local sans authentification et la CI reproductible.

Le binaire se découpe en huit sous-commandes : cinq pensées pour le poste du développeur, trois pour le pipeline GitLab. Rien dans l'ensemble local ne requiert de token GitLab ; tout l'ensemble CI est agnostique vis-à-vis de l'authentification — le YAML configure git remote set-url --push avant d'appeler le binaire.

local :                          CI :
  release-util init                release-util tag
  release-util doctor              release-util detect
  release-util next-version        release-util badge
  release-util release
  release-util hotfix
  release-util cleanup

La commande phare est release. Le reste existe pour que chaque étape du flux soit scriptable indépendamment.

Carte de la documentation

PageContenu
architecture/commandes.mdSurface complète des sous-commandes : flags, entrées, sorties, codes de sortie.
architecture/environnements-et-versioning.mdLes trois environnements (staging, prod, feature), le calcul de version, le compteur staging, les previews.
architecture/configuration.md.release-it.json, la clé trunkBranch, l'intégration release-it et la frontière du changelog.
architecture/integration-ci.mdForme canonique du pipeline, réglages projet GitLab requis, recettes d'intégration.
architecture/onboarding.mdPas-à-pas pour brancher un nouveau dépôt sur le workflow.
architecture/depannage.mdFAQ et dépannage des symptômes courants.
architecture/mcp.mdServeur MCP @spektrum/release-util-mcp : outils, API, configuration consommateur.

Surface d'invocation

L'outil est publié sur le registre npm interne ; l'invocation canonique passe par npx :

bash
npx --yes @spektrum/release-util@latest <commande> [flags]

@latest est intentionnel. Sans lui, npx met en cache la première version résolue sur une machine donnée — un correctif du script de release n'atteindrait jamais la moitié de l'équipe. Ne pas épingler une version précise en CI sans raison concrète.

Prérequis : Node ≥ 20 et git sur le PATH. Fonctionne sur macOS, Linux et Windows (PowerShell, cmd, Git Bash, WSL).

Flags de premier niveau

Applicables à n'importe quelle sous-commande :

FlagDescription
--verboseJournalise chaque invocation git. Peut apparaître n'importe où avant la sous-commande ; les sous-commandes l'acceptent aussi localement.
--help, -hAide de premier niveau, ou release-util <cmd> --help pour l'aide par commande.
--version, -VAffiche la version de la CLI elle-même.

--help et --version sont positionnels : avant toute sous-commande ils court-circuitent vers le gestionnaire de premier niveau ; après une sous-commande ils sont transmis au parseur de la sous-commande.

Codes de sortie

CodeSignification
0Succès (y compris le chemin de succès de --dry-run).
1Échec à l'exécution (précondition, git, réseau, etc.). Le message d'erreur et l'indice vont sur stderr.
2Erreur d'usage (mauvais flag, --env manquant, sous-commande inconnue).
3Échec de précondition de doctor (sentinelle — distincte de 1 pour pouvoir brancher dessus en CI).

3 est un contrat figé : il ne provient que de doctor lorsqu'une précondition échoue. La classification usage/exécution vit dans looksLikeUsageError() (src/cli.ts).

Contributors

No contributors

Changelog

No recent changes