# Author: Ahmad Samir name: Auto Delete Branch After Merge on: pull_request: types: [closed] # triggers when PR is closed (merged or just closed) jobs: delete-merged-branch: if: github.event.pull_request.merged == true name: Delete Merged Branch runs-on: app-sever-project-runner # your self-hosted runner steps: - name: Delete merged branch (with rules) env: GH_TOKEN: ${{ secrets.GH_TOKEN }} REPO: ${{ github.repository }} BASE_REF: ${{ github.event.pull_request.base.ref }} HEAD_REF: ${{ github.event.pull_request.head.ref }} run: | echo "๐Ÿ” Base branch: $BASE_REF" echo "๐Ÿ” Head branch: $HEAD_REF" # โŒ Do not delete dev_* merged into preprod_* if [[ "$HEAD_REF" == dev_* && "$BASE_REF" == preprod_* ]]; then echo "๐Ÿšซ Rule: Do not delete dev_* merged into preprod_*" exit 0 fi # โŒ Do not delete preprod_* merged into master_* if [[ "$HEAD_REF" == preprod_* && "$BASE_REF" == master_* ]]; then echo "๐Ÿšซ Rule: Do not delete preprod_* merged into master_*" exit 0 fi echo "โœ… Allowed to delete '$HEAD_REF' from '$REPO'" curl -s -X DELETE -H "Authorization: token $GH_TOKEN" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$REPO/git/refs/heads/$HEAD_REF -w " ๐Ÿงน Deleted branch '$HEAD_REF' from '$REPO' โ€” HTTP %{http_code} "