name: Auto-merge sync PRs on: pull_request: types: [labeled, opened, synchronize, reopened] jobs: auto-merge: runs-on: ubuntu-latest if: contains(github.event.pull_request.labels.*.name, 'sync') steps: - name: Set token for author id: set-token run: | PR_AUTHOR="${{ github.event.pull_request.user.login }}" echo "author=$PR_AUTHOR" >> $GITHUB_OUTPUT case "$PR_AUTHOR" in "wintonzheng") echo "token_name=WINTON_GH_PAT" >> $GITHUB_OUTPUT ;; "LawyZheng") echo "token_name=LAWY_GH_PAT" >> $GITHUB_OUTPUT ;; "suchintan") echo "token_name=SUCHINTAN_GH_PAT" >> $GITHUB_OUTPUT ;; "pedrohsdb") echo "token_name=PEDRO_GH_PAT" >> $GITHUB_OUTPUT ;; "marcmuon") echo "token_name=MARC_GH_PAT" >> $GITHUB_OUTPUT ;; "celalzamanoglu") echo "token_name=CELAL_GH_PAT" >> $GITHUB_OUTPUT ;; *) echo "token_name=" >> $GITHUB_OUTPUT echo "Author $PR_AUTHOR is not in the approved list" ;; esac - name: Auto-merge PR if: steps.set-token.outputs.token_name != '' run: | echo "Merging PR for author ${{ steps.set-token.outputs.author }}" gh pr merge ${{ github.event.pull_request.number }} \ --repo ${{ github.repository }} \ --squash \ --admin env: GH_TOKEN: ${{ secrets[steps.set-token.outputs.token_name] }}