50 lines
1.5 KiB
YAML
50 lines
1.5 KiB
YAML
when:
|
|
event: [push, pull_request]
|
|
|
|
steps:
|
|
check-branch:
|
|
image: alpine/git
|
|
commands:
|
|
- BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
- |
|
|
echo "Branch: $BRANCH"
|
|
if [ "$BRANCH" = "main" ]; then
|
|
echo "✓ Production branch (protected)"
|
|
elif [ "$BRANCH" = "dev" ]; then
|
|
echo "✓ Development branch (protected)"
|
|
elif echo "$BRANCH" | grep -qE "^feature/"; then
|
|
echo "✓ Feature branch"
|
|
elif echo "$BRANCH" | grep -qE "^(fix|hotfix|release)/"; then
|
|
echo "✓ Special branch"
|
|
else
|
|
echo "⚠️ Unusual branch name: $BRANCH"
|
|
echo " Recommended: feature/<description>, fix/<description>"
|
|
fi
|
|
|
|
check-commit-message:
|
|
image: alpine/git
|
|
commands:
|
|
- MSG=$(git log -1 --pretty=%s)
|
|
- |
|
|
echo "Last commit: $MSG"
|
|
if echo "$MSG" | grep -qE "^(feat|fix|docs|style|refactor|test|chore): [a-z]"; then
|
|
echo "✓ Commit message follows convention"
|
|
else
|
|
echo "❌ Invalid commit message format"
|
|
echo " Expected: <type>: <description>"
|
|
echo " Types: feat, fix, docs, style, refactor, test, chore"
|
|
exit 1
|
|
fi
|
|
|
|
check-cache-files:
|
|
image: python:3.13
|
|
commands:
|
|
- |
|
|
CACHE_FILES=$(git diff --name-only HEAD~1 | grep -E "__pycache__|\.pyc$" || true)
|
|
if [ -n "$CACHE_FILES" ]; then
|
|
echo "❌ Cache files in commit:"
|
|
echo "$CACHE_FILES"
|
|
exit 1
|
|
fi
|
|
- echo "✓ No cache files in commit"
|