From 990e7e0e016bb10b81fd49c53e5a65f00ee3e0a5 Mon Sep 17 00:00:00 2001 From: pplancq Date: Mon, 18 Nov 2024 13:59:25 +0100 Subject: [PATCH 1/3] ci(design-system): run commitlint in CI on pull_request --- .github/workflows/main.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7773ab1d6..c5617dbf7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,3 +30,25 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + commitlint: + if: github.event_name == 'pull_request' + name: CommitLint + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: "*" # Use the LTS Node.js version + cache: "npm" + - run: npm ci + + # https://commitlint.js.org/guides/ci-setup.html#github-actions + - name: Validate PR commits with commitlint + run: npx commitlint --from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} --to ${{ github.event.pull_request.head.sha }} --verbose --color From e3484cadf03606400850b840ca20f2f2e365096b Mon Sep 17 00:00:00 2001 From: pplancq Date: Mon, 18 Nov 2024 14:20:02 +0100 Subject: [PATCH 2/3] chore(design-system): limited scope for commit --- .commitlintrc.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.commitlintrc.js b/.commitlintrc.js index 0b61046ba..56b6a9cf3 100644 --- a/.commitlintrc.js +++ b/.commitlintrc.js @@ -2,6 +2,21 @@ const config = { extends: ["@commitlint/config-conventional"], ignores: [commit => /release/.test(commit)], + rules: { + 'scope-enum': [ + 2, + 'always', + [ + 'design-system', + 'look&feel', + 'slash', + 'apollo', + 'deps', + 'deps-dev', + 'release', + ], + ], + }, }; module.exports = config; From d2a7bc5b0bc31a17b2ff4b0ba6dbd670b0ebae69 Mon Sep 17 00:00:00 2001 From: pplancq Date: Tue, 19 Nov 2024 08:59:52 +0100 Subject: [PATCH 3/3] docs(design-system): update rule of commit on CONTRIBUTING.md --- CONTRIBUTING.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d1bf315f3..30c1ce4ab 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,6 +30,51 @@ git switch -c nom-de-ma-branche 3. **Soumettre une Pull Request :** Une fois que vous êtes satisfait de vos modifications, soumettez une pull request vers la branche principale du projet. +## Règles de Commit + +### Convention de Commit + +Nous utilisons [Conventional Commits](https://www.conventionalcommits.org/) pour nous assurer que les messages de commit respectent les conventions spécifiées. + +````plaintext +[scope]: + +[optional body] + +[optional footer(s)] +```` + +Voici les règles à suivre pour les scopes de commit : +- Utilisez le scope correspondant au design system mis à jour par le commit. Les scopes disponibles sont : + - `slash` + - `look&feel` + - `apollo` +- Si le commit traite de deux ou plusieurs design systems, séparez les scopes par une virgule (`,`). +- Si le commit est plus général au projet, utilisez le scope `design-system`. +- Les scopes `deps`, `deps-dev` et `release` sont réservés et ne doivent pas être utilisés. + +Exemples de messages de commit valides : + +```plaintext +feat(slash): ajout d'un nouveau composant +fix(look&feel,apollo): correction des styles et des icônes +chore(design-system): mise à jour des dépendances +``` + +### Breaking Changes + +Pour indiquer un changement majeur qui casse la compatibilité, ajoutez un '!' entre le scope et les ':' ainsi qu'une section "BREAKING CHANGE" dans le footer du commit. + +> Le '!' permet de signaler que le commit contient une breaking change.\ +> La section "BREAKING CHANGE" permet de décrire les changements majeurs apportés par le commit. + +Exemple : +```plaintext +feat(slash)!: suppression des classModifiers + +BREAKING CHANGE: Les classModifiers ont été supprimés des composant Slash. Il faut désormais utiliser les props dédiés comme `variant` ou `size`. +``` + ## Système de Tâches Toutes les tâches et discussions sont gérées via les issues sur GitHub. Consultez la [page des issues](https://github.com/AxaFrance/design-system/issues) pour voir ce sur quoi les collaborateurs travaillent actuellement.