diff --git a/.github/workflows/github-merge.yml b/.github/workflows/github-merge.yml new file mode 100644 index 0000000..4f65501 --- /dev/null +++ b/.github/workflows/github-merge.yml @@ -0,0 +1,46 @@ +name: Auto Merge PRs + +on: + pull_request: + types: [opened, reopened, synchronize] + +permissions: + pull-requests: write + contents: write + +jobs: + enable-automerge: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Check PR author role + id: check_author + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + AUTHOR="${{ github.event.pull_request.user.login }}" + REPO="${{ github.repository }}" + PERMISSION=$(gh api repos/$REPO/collaborators/$AUTHOR/permission --jq '.permission') + + echo "PR author: $AUTHOR, permission: $PERMISSION" + + # Only allow if admin or maintain + if [[ "$PERMISSION" != "admin" && "$PERMISSION" != "maintain" ]]; then + echo "Author is not admin or maintainer. Exiting." + exit 1 + fi + + - name: Check if PR is draft + if: ${{ github.event.pull_request.draft == true }} + run: | + echo "PR is a draft. Exiting." + exit 1 + + - name: Enable auto-merge + uses: peter-evans/enable-pull-request-automerge@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + pull-request-number: ${{ github.event.pull_request.number }} + merge-method: merge