Skip to content

Commit af1f156

Browse files
committed
docs(git): Fix #1
1 parent 9e68bfb commit af1f156

4 files changed

Lines changed: 241 additions & 0 deletions

File tree

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Check branch name
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
check-branch-name:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Validate branch name
12+
run: |
13+
BRANCH_NAME="${GITHUB_HEAD_REF}"
14+
15+
echo "🔎 Vérification du nom de la branche"
16+
echo "➡️ Branche détectée : $BRANCH_NAME"
17+
echo ""
18+
19+
REGEX="^(main|dev|feat\/.+|feature\/.+|fix\/.+|hotfix\/.+)$"
20+
21+
if [[ ! "$BRANCH_NAME" =~ $REGEX ]]; then
22+
echo "❌ Nom de branche invalide"
23+
echo ""
24+
echo "👉 Branche détectée : $BRANCH_NAME"
25+
echo ""
26+
echo "📌 Conventions de nommage attendues :"
27+
echo " - main"
28+
echo " - dev"
29+
echo " - feat/ma-feature ou feature/ma-feature"
30+
echo " - fix/mon-correctif"
31+
echo " - hotfix/incident-production"
32+
echo ""
33+
echo "🛠️ Action attendue :"
34+
echo " - renomme ta branche localement"
35+
echo " - puis pousse-la à nouveau avant de créer la PR"
36+
echo ""
37+
echo "ℹ️ Exemple :"
38+
echo " git branch -m ancienne-branche feat/ma-feature"
39+
echo " git push origin feat/ma-feature"
40+
exit 1
41+
fi
42+
43+
echo "✅ Nom de branche conforme aux conventions"
44+
echo "🚀 Tu peux continuer avec la Pull Request"
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
name: Check branch rules
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
check-branch-rules:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Validate branch name and flow
12+
run: |
13+
SOURCE_BRANCH="${GITHUB_HEAD_REF}"
14+
TARGET_BRANCH="${GITHUB_BASE_REF}"
15+
16+
echo "🔎 Analyse de la Pull Request"
17+
echo "➡️ Branche source : $SOURCE_BRANCH"
18+
echo "➡️ Branche cible : $TARGET_BRANCH"
19+
echo ""
20+
21+
NAME_REGEX="^(main|dev|feat\/.+|feature\/.+|fix\/.+|hotfix\/.+)$"
22+
23+
if [[ ! "$SOURCE_BRANCH" =~ $NAME_REGEX ]]; then
24+
echo "❌ Nom de branche source invalide"
25+
echo ""
26+
echo "👉 Branche détectée : $SOURCE_BRANCH"
27+
echo "👉 Formats autorisés :"
28+
echo " - main"
29+
echo " - dev"
30+
echo " - feat/ma-feature ou feature/ma-feature"
31+
echo " - fix/mon-correctif"
32+
echo " - hotfix/incident-production"
33+
echo ""
34+
echo "🛠️ Action attendue : renomme ta branche avant de créer la PR."
35+
exit 1
36+
fi
37+
38+
if [[ ! "$TARGET_BRANCH" =~ $NAME_REGEX ]]; then
39+
echo "❌ Nom de branche cible invalide"
40+
echo ""
41+
echo "👉 Branche cible détectée : $TARGET_BRANCH"
42+
echo "👉 Seules les branches standards sont autorisées comme cible (main, dev)."
43+
echo ""
44+
echo "🛠️ Action attendue : modifie la branche cible de la PR."
45+
exit 1
46+
fi
47+
48+
if [[ "$SOURCE_BRANCH" =~ ^(feat\/|feature\/) && "$TARGET_BRANCH" != "dev" ]]; then
49+
echo "❌ Règle de workflow non respectée"
50+
echo ""
51+
echo "👉 Une branche de feature doit être fusionnée dans dev."
52+
echo "👉 Actuel : $SOURCE_BRANCH → $TARGET_BRANCH"
53+
echo ""
54+
echo "🛠️ Action attendue : change la cible de la PR vers dev."
55+
exit 1
56+
fi
57+
58+
if [[ "$SOURCE_BRANCH" =~ ^fix\/ && ! "$TARGET_BRANCH" =~ ^(feat\/|feature\/) ]]; then
59+
echo "❌ Règle de workflow non respectée"
60+
echo ""
61+
echo "👉 Une branche fix sert à corriger une feature."
62+
echo "👉 Elle doit donc cibler la branche feature correspondante."
63+
echo "👉 Actuel : $SOURCE_BRANCH → $TARGET_BRANCH"
64+
echo ""
65+
echo "🛠️ Action attendue : cible la branche feat/* ou feature/* concernée."
66+
exit 1
67+
fi
68+
69+
if [[ "$SOURCE_BRANCH" =~ ^hotfix\/ && "$TARGET_BRANCH" != "main" ]]; then
70+
echo "❌ Règle de workflow non respectée"
71+
echo ""
72+
echo "👉 Une branche hotfix corrige un problème en production."
73+
echo "👉 Elle doit être fusionnée directement dans main."
74+
echo "👉 Actuel : $SOURCE_BRANCH → $TARGET_BRANCH"
75+
echo ""
76+
echo "🛠️ Action attendue : change la cible de la PR vers main."
77+
exit 1
78+
fi
79+
80+
if [[ "$SOURCE_BRANCH" == "dev" && "$TARGET_BRANCH" != "main" ]]; then
81+
echo "❌ Règle de workflow non respectée"
82+
echo ""
83+
echo "👉 La branche dev ne peut être fusionnée que dans main."
84+
echo "👉 Actuel : dev → $TARGET_BRANCH"
85+
echo ""
86+
echo "🛠️ Action attendue : change la cible de la PR vers main."
87+
exit 1
88+
fi
89+
90+
echo "✅ Toutes les règles de branches sont respectées"
91+
echo "🚀 La Pull Request peut être revue et fusionnée"
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Check commit message
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
check-commit-message:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Checkout
12+
uses: actions/checkout@v4
13+
with:
14+
fetch-depth: 0
15+
16+
- name: Validate commit message
17+
run: |
18+
COMMIT_MSG=$(git log -1 --pretty=%B)
19+
20+
echo "🔎 Vérification du message de commit"
21+
echo "----------------------------------"
22+
echo "$COMMIT_MSG"
23+
echo ""
24+
25+
REGEX="^(feat|fix|hotfix|docs|refactor|test|chore)(\([a-zA-Z0-9_-]+\))?: .+"
26+
27+
if [[ ! "$COMMIT_MSG" =~ $REGEX ]]; then
28+
echo "❌ Message de commit non conforme"
29+
echo ""
30+
echo "👉 Format attendu :"
31+
echo " type(scope): description courte"
32+
echo ""
33+
echo "👉 Types autorisés : feat, fix, hotfix, docs, refactor, test, chore"
34+
echo ""
35+
echo "📌 Exemples valides :"
36+
echo " feat(auth): ajout du login"
37+
echo " fix(button): correction du style"
38+
echo ""
39+
echo "🛠️ Action attendue :"
40+
echo " modifie ton commit avec :"
41+
echo " git commit --amend"
42+
exit 1
43+
fi
44+
45+
if ! echo "$COMMIT_MSG" | grep -qiE "(fixes|closes|resolves) #[0-9]+"; then
46+
echo "⚠️ Aucun lien avec une issue détecté"
47+
echo ""
48+
echo "👉 Bonne pratique recommandée :"
49+
echo " ajoute dans le message : Fixes #<numéro>"
50+
echo ""
51+
echo "ℹ️ Exemple :"
52+
echo " Fixes #12"
53+
fi
54+
55+
echo "✅ Message de commit conforme"

CHANGELOG.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Changelog
2+
3+
Toutes les modifications notables de ce projet seront documentées dans ce fichier.
4+
5+
Le format est basé sur **[Keep a Changelog](https://keepachangelog.com/fr/1.0.0/)**
6+
et ce projet suit le **[Semantic Versioning](https://semver.org/lang/fr/)**.
7+
8+
---
9+
10+
## [Unreleased]
11+
12+
### ✨ Features
13+
14+
-
15+
16+
### 🐛 Fixes
17+
18+
-
19+
20+
### 🧹 Maintenance
21+
22+
- ***
23+
24+
## [0.0.1] - YYYY-MM-DD
25+
26+
### ✨ Features
27+
28+
- Initialisation du projet
29+
30+
---
31+
32+
## Types de changements
33+
34+
- **✨ Features** : nouvelles fonctionnalités
35+
- **🐛 Fixes** : corrections de bugs
36+
- **⚠️ Breaking Changes** : changements incompatibles
37+
- **🧹 Maintenance** : refactor, chores, dépendances
38+
- **📚 Documentation** : documentation uniquement
39+
40+
---
41+
42+
## Règles de contribution
43+
44+
- Les messages de commit suivent la convention **Conventional Commits**
45+
- Les issues peuvent être fermées automatiquement avec :
46+
47+
- `Fixes #<numéro>`
48+
- `Closes #<numéro>`
49+
- `Resolves #<numéro>`
50+
51+
- Le contenu de ce fichier est destiné à être **généré automatiquement** (ne pas éditer à la main après initialisation)

0 commit comments

Comments
 (0)