ferrflow release

Lance le pipeline complet de release : bump des versions, mise à jour des changelogs, commit, tag, push et création de la release.

ferrflow release [OPTIONS]
Option Description
--force Autoriser les floating tags à reculer vers une version inférieure
--force-version Forcer une version spécifique, sans analyser les commits. Format : VERSION (repo simple) ou NAME@VERSION (monorepo)
--channel Canal de pré-release à utiliser (ex. beta, rc, dev)
--draft Créer les releases en brouillon (GitHub uniquement). Un ferrflow release ultérieur sans --draft détecte et publie automatiquement les brouillons existants
--force-unlock Forcer la levée d'un verrou .git/ferrflow.lock existant. À n'utiliser que si aucun autre ferrflow release n'est en cours — par exemple après un crash ayant laissé le fichier de verrou

Ce que ça fait :

  1. Scanne les commits depuis le dernier tag pour chaque package
  2. Détermine l'incrément de version à partir des Conventional Commits
  3. Met à jour tous les versionedFiles avec la nouvelle version
  4. Ajoute la nouvelle section au CHANGELOG.md
  5. Crée un commit git, ouvre une PR, ou passe (selon releaseCommitMode)
  6. Crée et pousse le tag git
  7. Crée une release GitHub/GitLab avec le changelog comme notes

ferrflow check

Prévisualiser ce que ferrflow release ferait sans effectuer de changements.

ferrflow check [OPTIONS]
Option Description
--json Sortie au format JSON
--channel Canal de pré-release à utiliser (ex. beta, rc, dev)
--comment Poster un commentaire de prévisualisation sur la PR/MR courante

ferrflow publish

Exécuter les publishers configurés pour la version actuellement publiée de chaque package — sans bumper, committer ni tagger. ferrflow release exécute déjà vos publishers à la fin d'une release ; ferrflow publish sert lorsque vous préférez les exécuter dans un job CI séparé disposant de la toolchain de build et de l'authentification registre dont les publishers ont besoin (docker buildx, helm, un dist/ compilé, …) — ce que votre job de release n'a pas forcément.

ferrflow publish [PACKAGE]
Argument Description
[PACKAGE] Publier un seul package par son nom. Omettre pour exécuter les publishers de chaque package qui en déclare.

Il lit la version actuelle de chaque package depuis ses versionedFiles (ou le dernier tag correspondant pour les packages tag-only), donc à exécuter après que ferrflow release a coupé la version — typiquement depuis un workflow déclenché par le tag de release. Les publishers sont idempotents : tout ce qui est déjà sur le registre est ignoré, donc une ré-exécution est sûre. Utilisez l'option globale --dry-run pour prévisualiser sans publier.

L'Action GitHub l'expose via mode: publish — elle installe le binaire et exécute ferrflow publish pour vous, de sorte qu'un job déclenché par le tag n'a plus qu'à mettre en place la toolchain dont ses publishers ont besoin :

on:
  push:
    tags: ["v*"]
jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v6
      - uses: docker/setup-buildx-action@v4
      - uses: docker/login-action@v4
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - uses: FerrLabs/FerrFlow@v5
        with:
          mode: publish

ferrflow changelog

Générer ou mettre à jour CHANGELOG.md uniquement, sans bumper les versions ni créer de tags.

ferrflow changelog

Ne prend aucune option spécifique. Utilisez l'option globale --dry-run pour afficher l'entrée sans l'écrire.


ferrflow init

Générer un fichier de configuration pour le repository courant. Détecte les fichiers de version existants (Cargo.toml, package.json, etc.) et génère la configuration appropriée.

ferrflow init [OPTIONS]
Option Description
--format Format du fichier de configuration : json, json5 ou toml

ferrflow status

Afficher la version actuelle de chaque package et si une release serait déclenchée.

ferrflow status [OPTIONS]
Option Description
--output Format de sortie : text (défaut) ou json

Exemple de sortie :

api    1.2.3   minor bump pending (1 feat commit)
site   0.4.1   no release (only chore commits)

ferrflow version

Afficher la version actuelle d'un ou de tous les packages. Utile dans les scripts CI.

ferrflow version [PACKAGE] [OPTIONS]
Option Description
--json Sortie au format JSON

Retourne la version depuis le dernier tag git correspondant au modèle de tag du package.


ferrflow tag

Afficher le dernier tag pour un ou tous les packages.

ferrflow tag [PACKAGE] [OPTIONS]
Option Description
--json Sortie au format JSON

ferrflow validate

Valider la configuration et les fichiers versionnés qu'elle référence, sans rien bumper. Utilisez --repo pour valider un dépôt distant plutôt que l'arbre de travail.

ferrflow validate [OPTIONS]
Option Description
--json Sortie au format JSON
--repo Dépôt distant à valider (ex. owner/repo pour GitHub, ou gitlab:group/project)
--ref Ref git pour la validation distante (branche, tag ou commit)

ferrflow completions

Générer un script de complétion shell et l'afficher sur la sortie standard.

ferrflow completions <SHELL>

est l'un de bash, elvish, fish, powershell ou zsh.


Options globales

Ces options fonctionnent avec toutes les commandes :

Option Description
--dry-run Montrer ce qui se passerait sans effectuer de changements
--verbose, -v Sortie détaillée, incluant les hashes de commits et les diffs de fichiers
--config Chemin vers un fichier de configuration personnalisé (défaut : auto-détecté). Accepte aussi la variable d'environnement FERRFLOW_CONFIG.
--version Afficher la version de FerrFlow et quitter
--help, -h Afficher l'aide