# Action "Version Bumper" ## Description Une action composite permettant de récupérer et d'incrémenter la version contenue dans le fichier `.version` à la racine du dépôt. La version suit le format [SemVer](https://semver.org/lang/fr/) : `MAJOR.MINOR.PATCH` (ex. `1.4.2`). Selon le type de bump demandé, l'action incrémente la partie correspondante : - `MAJOR` : `1.4.2` → `2.0.0` (réinitialise minor et patch). - `MINOR` : `1.4.2` → `1.5.0` (réinitialise patch). - `PATCH` : `1.4.2` → `1.4.3`. L'action configure ensuite un utilisateur git, écrit la nouvelle version dans `.version`, puis **commit et push** le changement. > Astuce : le type de bump peut être déterminé automatiquement à partir du > message de commit grâce à l'action `determineBumpType`, dont la sortie peut > alimenter le paramètre `bumpType`. ## Paramètres | Paramètre | Obligatoire | Défaut | Description | | ---------- | ----------- | ------- | ------------------------------------------------------- | | `bumpType` | Non | `PATCH` | Type de bump de version : `MAJOR`, `MINOR` ou `PATCH`. | ## Exemple d'utilisation ```yaml steps: - name: Bump de la version uses: https://forgejo.pixao.fr/CI-CD/ForgejoActions/versionBumper@master with: bumpType: MINOR ``` Combiné avec `determineBumpType` : ```yaml steps: - name: Déterminer le type de bump id: bump uses: https://forgejo.pixao.fr/CI-CD/ForgejoActions/determineBumpType@master with: COMMIT_MESSAGE: ${{ github.event.head_commit.message }} - name: Bump de la version uses: https://forgejo.pixao.fr/CI-CD/ForgejoActions/versionBumper@master with: bumpType: ${{ steps.bump.outputs.bumpType }} ``` ## Points d'attention - **Fichier `.version` requis** : le fichier `.version` doit exister à la racine du dépôt et contenir une version valide au format `MAJOR.MINOR.PATCH`. Sinon le `cat` échoue ou produit une version incohérente. - **Valeurs sensibles à la casse** : le paramètre `bumpType` est comparé en majuscules (`MAJOR`, `MINOR`, `PATCH`). Une valeur comme `minor` ou `Patch` ne déclenchera aucune des étapes et **aucun bump ne sera effectué**. - **Commit & push automatiques** : l'action pousse directement sur la branche courante. Le runner doit donc disposer des droits d'écriture (token avec permission `contents: write` / accès push configuré). - **`[skip ci]`** : le message de commit contient `[skip ci]` afin d'éviter de redéclencher un pipeline en boucle. Vérifiez que votre CI respecte bien cette convention. - **Checkout complet** : assurez-vous que l'étape de checkout permet le push (branche correctement positionnée, pas en état *detached HEAD*). - **Échec si rien à committer** : l'étape `Commit & push` échoue si aucun changement n'a été ajouté (par exemple si `bumpType` est invalide), car `git commit` n'a rien à committer.