GitHub Action
Enable Pull Request Automerge
A GitHub action to enable auto-merge on a pull request.
❗ Using this action is no longer necessary |
---|
The same functionality exists in the GitHub CLI. See the documentation here.
- name: Enable Pull Request Automerge
run: gh pr merge --merge --auto "1"
env:
GH_TOKEN: ${{ secrets.PAT }}
If you prefer to use this action:
- uses: peter-evans/enable-pull-request-automerge@v3
with:
token: ${{ secrets.PAT }}
pull-request-number: 1
Name | Description | Default |
---|---|---|
token |
GITHUB_TOKEN (permissions pull_requests: write , contents: write ) or a repo scoped Personal Access Token (PAT). |
GITHUB_TOKEN |
repository |
The target GitHub repository containing the pull request. | github.repository (Current repository) |
pull-request-number |
(required) The number of the target pull request | |
merge-method |
The merge method to use. merge , rebase or squash . |
merge |
The following conditions must be true for auto-merge to be enabled on a pull request.
- The target repository must have Allow auto-merge enabled in settings.
- The pull request
base
must have a branch protection rule with at least one requirement enabled. - The pull request must be in a state where requirements have not yet been satisfied. If the pull request is in a state where it can already be merged, the action will merge it immediately without enabling auto-merge.
The following example will automerge dependabot pull requests.
Note that if you use the default GITHUB_TOKEN
, as in the example, the merge will not trigger further workflow runs.
If you want to trigger further workflow runs, you will need to use a repo
scoped Personal Access Token (PAT).
name: Auto-merge Dependabot
on: pull_request
permissions:
pull-requests: write
contents: write
jobs:
automerge:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- uses: peter-evans/enable-pull-request-automerge@v3
with:
pull-request-number: ${{ github.event.pull_request.number }}
merge-method: squash
In the following example create-pull-request action is used to create a pull request containing some changes that we want to merge automatically once requirements have been satisfied.
- uses: actions/checkout@v3
# Make changes to pull request here
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.PAT }}
- name: Enable Pull Request Automerge
if: steps.cpr.outputs.pull-request-operation == 'created'
uses: peter-evans/enable-pull-request-automerge@v3
with:
token: ${{ secrets.PAT }}
pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
merge-method: squash
If the "require pull request reviews" branch protection has been enabled we can optionally auto-approve the pull request by adding the following step to the example above.
The if
condition makes sure we don't approve multiple times if the workflow executes more than once before the pull request merges.
- name: Auto approve
if: steps.cpr.outputs.pull-request-operation == 'created'
run: gh pr review --approve "${{ steps.cpr.outputs.pull-request-number }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}