From 2f9cc46aeb79b82df8daad4633efdc9db10d1f1b Mon Sep 17 00:00:00 2001 From: Kyle Ebbinga <26614720+TheGuitarleader@users.noreply.github.com> Date: Fri, 12 Dec 2025 18:02:28 -0600 Subject: [PATCH 1/3] Added auto-merge workflow --- .github/workflows/github-merge.yml | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/github-merge.yml diff --git a/.github/workflows/github-merge.yml b/.github/workflows/github-merge.yml new file mode 100644 index 0000000..025b238 --- /dev/null +++ b/.github/workflows/github-merge.yml @@ -0,0 +1,40 @@ +name: Auto Merge PRs + +on: + pull_request: + types: [opened, reopened, synchronize] + +permissions: + pull-requests: write + contents: write + +jobs: + auto-merge: + runs-on: ubuntu-latest + steps: + - name: Check PR author role + id: check_author + run: | + AUTHOR="${{ github.event.pull_request.user.login }}" + REPO="${{ github.repository }}" + + echo "PR author: $AUTHOR" + + # Get collaborator permission level for the author + PERMISSION=$(gh api repos/$REPO/collaborators/$AUTHOR/permission \ + --jq '.permission') + + echo "Author permission: $PERMISSION" + + # Only allow merge if admin or maintain + if [[ "$PERMISSION" != "admin" && "$PERMISSION" != "maintain" ]]; then + echo "Author is not admin or maintainer. Exiting." + exit 1 + fi + + - name: Merge PR + run: | + echo "Merging PR #${{ github.event.pull_request.number }} from ${GITHUB_ACTOR}" + gh pr merge "${{ github.event.pull_request.number }}" --merge --delete-branch + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From ae7456ee340fe2f4c0591c00f0d221c9be7871a4 Mon Sep 17 00:00:00 2001 From: Kyle Ebbinga <26614720+TheGuitarleader@users.noreply.github.com> Date: Fri, 12 Dec 2025 18:07:56 -0600 Subject: [PATCH 2/3] Refactor GitHub Actions to simplify permission check --- .github/workflows/github-merge.yml | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/.github/workflows/github-merge.yml b/.github/workflows/github-merge.yml index 025b238..121b907 100644 --- a/.github/workflows/github-merge.yml +++ b/.github/workflows/github-merge.yml @@ -17,24 +17,18 @@ jobs: run: | AUTHOR="${{ github.event.pull_request.user.login }}" REPO="${{ github.repository }}" - - echo "PR author: $AUTHOR" - - # Get collaborator permission level for the author - PERMISSION=$(gh api repos/$REPO/collaborators/$AUTHOR/permission \ - --jq '.permission') - - echo "Author permission: $PERMISSION" - - # Only allow merge if admin or maintain + PERMISSION=$(gh api repos/$REPO/collaborators/$AUTHOR/permission --jq '.permission') + echo "PR author: $AUTHOR, permission: $PERMISSION" if [[ "$PERMISSION" != "admin" && "$PERMISSION" != "maintain" ]]; then echo "Author is not admin or maintainer. Exiting." exit 1 fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Merge PR + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - echo "Merging PR #${{ github.event.pull_request.number }} from ${GITHUB_ACTOR}" + echo "Merging PR #${{ github.event.pull_request.number }} from $AUTHOR" gh pr merge "${{ github.event.pull_request.number }}" --merge --delete-branch - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 8da49abb62ced6823e36b541730a0dd4a089c406 Mon Sep 17 00:00:00 2001 From: Kyle Ebbinga <26614720+TheGuitarleader@users.noreply.github.com> Date: Fri, 12 Dec 2025 18:18:57 -0600 Subject: [PATCH 3/3] Refactor GitHub Actions for PR auto-merge --- .github/workflows/github-merge.yml | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/.github/workflows/github-merge.yml b/.github/workflows/github-merge.yml index 121b907..4f65501 100644 --- a/.github/workflows/github-merge.yml +++ b/.github/workflows/github-merge.yml @@ -9,26 +9,38 @@ permissions: contents: write jobs: - auto-merge: + 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 - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Merge PR - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Check if PR is draft + if: ${{ github.event.pull_request.draft == true }} run: | - echo "Merging PR #${{ github.event.pull_request.number }} from $AUTHOR" - gh pr merge "${{ github.event.pull_request.number }}" --merge --delete-branch + 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