Skip to content

docs(database): Fix #4 #3

docs(database): Fix #4

docs(database): Fix #4 #3

name: Check branch rules
on:
pull_request:
jobs:
check-branch-rules:
runs-on: ubuntu-latest
steps:
- name: Validate branch name and flow
run: |
SOURCE_BRANCH="${GITHUB_HEAD_REF}"
TARGET_BRANCH="${GITHUB_BASE_REF}"
echo "🔎 Analyse de la Pull Request"
echo "➡️ Branche source : $SOURCE_BRANCH"
echo "➡️ Branche cible : $TARGET_BRANCH"
echo ""
NAME_REGEX="^(main|dev|feat\/.+|feature\/.+|fix\/.+|hotfix\/.+)$"
if [[ ! "$SOURCE_BRANCH" =~ $NAME_REGEX ]]; then
echo "❌ Nom de branche source invalide"
echo ""
echo "👉 Branche détectée : $SOURCE_BRANCH"
echo "👉 Formats autorisés :"
echo " - main"
echo " - dev"
echo " - feat/ma-feature ou feature/ma-feature"
echo " - fix/mon-correctif"
echo " - hotfix/incident-production"
echo ""
echo "🛠️ Action attendue : renomme ta branche avant de créer la PR."
exit 1
fi
if [[ ! "$TARGET_BRANCH" =~ $NAME_REGEX ]]; then
echo "❌ Nom de branche cible invalide"
echo ""
echo "👉 Branche cible détectée : $TARGET_BRANCH"
echo "👉 Seules les branches standards sont autorisées comme cible (main, dev)."
echo ""
echo "🛠️ Action attendue : modifie la branche cible de la PR."
exit 1
fi
if [[ "$SOURCE_BRANCH" =~ ^(feat\/|feature\/) && "$TARGET_BRANCH" != "dev" ]]; then
echo "❌ Règle de workflow non respectée"
echo ""
echo "👉 Une branche de feature doit être fusionnée dans dev."
echo "👉 Actuel : $SOURCE_BRANCH → $TARGET_BRANCH"
echo ""
echo "🛠️ Action attendue : change la cible de la PR vers dev."
exit 1
fi
if [[ "$SOURCE_BRANCH" =~ ^fix\/ && ! "$TARGET_BRANCH" =~ ^(feat\/|feature\/) ]]; then
echo "❌ Règle de workflow non respectée"
echo ""
echo "👉 Une branche fix sert à corriger une feature."
echo "👉 Elle doit donc cibler la branche feature correspondante."
echo "👉 Actuel : $SOURCE_BRANCH → $TARGET_BRANCH"
echo ""
echo "🛠️ Action attendue : cible la branche feat/* ou feature/* concernée."
exit 1
fi
if [[ "$SOURCE_BRANCH" =~ ^hotfix\/ && "$TARGET_BRANCH" != "main" ]]; then
echo "❌ Règle de workflow non respectée"
echo ""
echo "👉 Une branche hotfix corrige un problème en production."
echo "👉 Elle doit être fusionnée directement dans main."
echo "👉 Actuel : $SOURCE_BRANCH → $TARGET_BRANCH"
echo ""
echo "🛠️ Action attendue : change la cible de la PR vers main."
exit 1
fi
if [[ "$SOURCE_BRANCH" == "dev" && "$TARGET_BRANCH" != "main" ]]; then
echo "❌ Règle de workflow non respectée"
echo ""
echo "👉 La branche dev ne peut être fusionnée que dans main."
echo "👉 Actuel : dev → $TARGET_BRANCH"
echo ""
echo "🛠️ Action attendue : change la cible de la PR vers main."
exit 1
fi
echo "✅ Toutes les règles de branches sont respectées"
echo "🚀 La Pull Request peut être revue et fusionnée"