Skip to content

Feat no slashes in branches #3

Feat no slashes in branches

Feat no slashes in branches #3

Workflow file for this run

name: Pull Request Checks
on:
pull_request:
branches:
- '**'
jobs:
branch-name-check:
name: Enforce Branch Name Convention
runs-on: ubuntu-latest
steps:
- name: Validate Branch Name
run: |
#BRANCH_NAME="${GITHUB_HEAD_REF}"
BRANCH_NAME="${GITHUB_HEAD_REF:-${GITHUB_REF_NAME}}"
echo "Validating branch name: $BRANCH_NAME"
if [[ "$BRANCH_NAME" =~ ^(feat|fix|bugfix|hotfix|build|chore|ci|docs|perf|refactor|revert|style|test)-[a-zA-Z0-9._/-]+$ ]] || [[ "$BRANCH_NAME" == "master" ]]; then
echo "✅ Branch name is valid"
else
echo "❌ Invalid branch name: $BRANCH_NAME"
echo "Branch names must follow one of the allowed prefixes:"
echo " feat-*, fix-*, bugfix-*, hotfix-*, build-*, chore-*, ci-*, docs-*, perf-*, refactor-*, revert-*, style-*, test-*"
exit 1
fi
continue-on-error: true
commitlint:
# qqqq repo will need branch protection rules and PR Template
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@v5
continue-on-error: true #we dont want to package etc if bad commits also pre-commit preferred
gitguardian-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: GitGuardian Scan
uses: GitGuardian/gg-shield-action@v1
env:
GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
continue-on-error: true # we dont want secrets going further and the keys need to be changed if this is triggered
Unit-Tests:
runs-on: ubuntu-latest
steps:
- name: See other project pipeline for Tests
run: echo "qqqq See other project pipeline for Tests this is a placeholder"
continue-on-error: true
E2E-Tests:
runs-on: ubuntu-latest
steps:
- name: See other project pipeline for Tests
run: echo "qqqq See other project pipeline for Tests this is a placeholder"
continue-on-error: true
Code-Coverage:
runs-on: ubuntu-latest
steps:
- name: Code Coverage
run: echo "TODO Code Coverage"
continue-on-error: true
Check-Merge-Conflicts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for merge conflicts
run: |
git fetch origin main:main
if git merge-tree $(git merge-base main HEAD) main HEAD | grep -i "<<<<<"; then
echo "Merge conflicts detected!"
exit 1
else
echo "No merge conflicts detected"
fi
continue-on-error: true
check-ci-by-failing-here:
runs-on: ubuntu-latest
steps:
- name: cause a fail
run: |
echo "This will fail"
exit 1 # Causes a failure
continue-on-error: true
final-validation:
name: Final Validation (Fails if any previous job fails)
runs-on: ubuntu-latest
needs:
- branch-name-check
- commitlint
- gitguardian-scan
- Unit-Tests
- E2E-Tests
- Code-Coverage
- Check-Merge-Conflicts
- check-ci-by-failing-here
steps:
- name: Check all previous jobs
run: |
failed_jobs=""
# Check if any job failed and append to the failed_jobs list
if [[ "${{ needs.branch-name-check.result }}" != "success" ]]; then
failed_jobs+="branch-name-check, "
fi
if [[ "${{ needs.commitlint.result }}" != "success" ]]; then
failed_jobs+="commitlint, "
fi
if [[ "${{ needs.gitguardian-scan.result }}" != "success" ]]; then
failed_jobs+="gitguardian-scan, "
fi
if [[ "${{ needs.Unit-Tests.result }}" != "success" ]]; then
failed_jobs+="Unit-Tests, "
fi
if [[ "${{ needs.E2E-Tests.result }}" != "success" ]]; then
failed_jobs+="E2E-Tests, "
fi
if [[ "${{ needs.Code-Coverage.result }}" != "success" ]]; then
failed_jobs+="Code-Coverage, "
fi
if [[ "${{ needs.Check-Merge-Conflicts.result }}" != "success" ]]; then
failed_jobs+="Check-Merge-Conflicts, "
fi
if [[ "${{ needs.check-ci-by-failing-here.result }}" != "success" ]]; then
failed_jobs+="check-ci-by-failing-here, "
fi
# Remove the last comma if there were failures
failed_jobs=$(echo $failed_jobs | sed 's/, $//')
if [[ -n "$failed_jobs" ]]; then
echo "❌ The following jobs failed: $failed_jobs"
exit 1 # Fail the final validation if any job failed
else
echo "✅ All checks passed!"
fi
# final-validation:
# name: Final Validation (Fails if any previous job fails)
# runs-on: ubuntu-latest
# needs: [branch-name-check, commitlint, gitguardian-scan, unit-tests, e2e-tests, code-coverage, Check-Merge-Conflicts, check-ci-by-failing-here.result] # Depend on all jobs
# if: ${{
# needs.branch-name-check.result == 'success' &&
# needs.commitlint.result == 'success' &&
# needs.gitguardian-scan.result == 'success' &&
# needs.unit-tests.result == 'success' &&
# needs.e2e-tests.result == 'success' &&
# needs.code-coverage.result == 'success' &&
# needs.Check-Merge-Conflicts.result == 'success' &&
# needs.check-ci-by-failing-here.result == 'success'
# }}
# steps:
# - name: Check all previous jobs
# run: echo "✅ All checks passed!"