odex30_standard/.github/workflows/delete-merged-branches.yml

48 lines
1.6 KiB
YAML

name: Auto Delete Branch After Merge
on:
pull_request:
types: [closed]
jobs:
delete-merged-branch:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- name: Delete merged branch
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GH_TOKEN }}
script: |
const base = context.payload.pull_request.base.ref;
const head = context.payload.pull_request.head.ref;
const owner = context.repo.owner;
const repo = context.repo.repo;
core.info(`Check Deletion for: ${head} (merged into ${base})`);
// Protected Patterns
const protectedPrefixes = ["dev_", "preprod_", "master_", "main"];
// Check if head branch is protected
const isProtected = protectedPrefixes.some(prefix => head.startsWith(prefix));
if (isProtected) {
core.info(`🛡️ Branch '${head}' is a protected environment branch. Skipping deletion.`);
return;
}
// Additional Safety: Don't delete if it's not a standard feature/fix pattern?
// User wants to clean up users branches.
try {
core.info(`🧹 Deleting branch: ${head}`);
await github.rest.git.deleteRef({
owner,
repo,
ref: `heads/${head}`
});
core.info("✅ Branch deleted successfully.");
} catch (error) {
core.warning(`Failed to delete branch: ${error.message}`);
}