48 lines
1.6 KiB
YAML
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}`);
|
|
} |