diff --git a/.github/workflows/delete-merged-branches.yml b/.github/workflows/delete-merged-branches.yml new file mode 100644 index 000000000..ff902a5c7 --- /dev/null +++ b/.github/workflows/delete-merged-branches.yml @@ -0,0 +1,41 @@ +# 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} +" \ No newline at end of file