Speed up your workflows by automatically enabling Auto-Merge in your Github pull-requests, so you can release when ready.
Name: alexwilson/enable-github-automerge-action
To speed up some of your workflows, this action allows you to automatically enable Auto-Merge in your Github pull-requests.
When enabled, auto-merge will merge pull-requests automatically as soon as all requirements are met (i.e. approvals, passing tests).
You can use this, for example, to automatically merge Dependabot pull-requests.
This action pairs well with hmarr/auto-approve-action
.
Add as a step inside a GitHub workflow, e.g. .github/workflows/auto-merge.yml
. You can see an example of this in this repository.
⚠️ GitHub have recently improved the security model of actions reducing the risk of unknown code accessing secrets, so we recommend running this in an isolated workflow within thepull_request_target
scope, on a trusted event (e.g.labeled
).
name: Auto-Merge
on:
pull_request_target:
types: [labeled]
jobs:
enable-auto-merge:
runs-on: ubuntu-latest
# Specifically check that dependabot (or another trusted party) created this pull-request, and that it has been labelled correctly.
if: github.event.pull_request.user.login == 'dependabot[bot]' && contains(github.event.pull_request.labels.*.name, 'dependencies')
steps:
- uses: alexwilson/enable-github-automerge-action@main
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
Note: You will probably want to add some restrictions so this doesn't auto-merge every PR: these are handled fairly well by GitHub Workflow syntax, you can read more about this here.
- uses: alexwilson/[email protected]
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
merge-method: "SQUASH"
- github-token: The Github Token to use for this action. By default this variable is set to run as
github-actions
, however you can replace this with another user/actor's Github Token (make sure it has, at minimum,repo
scope). - merge-method: Override the merge method. By default this action attempts to select your repository's default merge method, and falls back to merge. One of
MERGE
,SQUASH
orREBASE
. Read more here.
Github Action developer-experience isn't fantastic, so for now we mimic the Github Action environment in ./src/local.ts
.
This file sets environment variables locally to enable action inputs, and points to a sample pull-request webhook event in ./stub/example-pull-request.json
.
- Make sure you're running a recent version of Node (the correct version will always be in
.nvmrc
andaction.yml
) - Set
GITHUB_TOKEN
locally. (You can do this via$ export GITHUB_TOKEN=blah
) - Optionally(!) set
MERGE_METHOD
locally. (You can do this via$ export MERGE_METHOD=MERGE
) - Run with
npm run local
. - Important: Avoid committing anything to
dist/*
— this is automatically regenerated and manually adjusting this will make rebasing harder!