Automatically update the PR branch
The job of the action is to help click "Update branch" button for you. Designed to work with the auto-merge
and "Require branches to be up to date before merging" options. It will update the newest open PR that match the below conditions
- The PR has the
auto-merge
option enabled - The PR has 2 approvals and no changes-requested review (configurable)
- The PR has all checks passed (configurable)
- The PR branch has no conflicts with the base branch
- The PR branch is behind the base branch
You may consider to use this action if you:
- Have enabled the
auto-merge
feature in your repo. - Have checked the "Require branches to be up to date before merging" checkbox for protected branches. See more Require status checks before merging
Because of #2, even you have enabled auto-merge
for a PR, the PR won't be automatically merged if the PR branch is behind the base branch, for example someone else merges another PR before your PR passes all CI checks. See the screenshot as below.
Required
Need to note, you can't use GITHUB_TOKEN
because of this limitation
Required
Default: master
The base branch that the PR will use to fetch open PRs, for example, main
, master
or dev
.
The action will only check PRs that use the base
as the base branch.
Required
Default: 2
The action will skip PRs that have less approvals than required_approval_count
.
We could retrieve this value from the repo settings through an API call but that will incur one more request. GitHub has rate limit on API usage of GitHub actions.
Optional
Default: true
The action will skip updating PRs that have failed checks. Please note that if allow_ongoing_checks
is set to false
, the action will skip updating PRs with ongoing checks. This will result in the failure to update PR branches when the action is triggered while checks for those PRs are still in progress.
Optional
Default: false
The action will consider PRs that have ongoing checks. This is useful when the action is triggered while checks for some otherwise qualified PRs are still in progress. Note, this option works only when require_passed_checks
is set to true
.
Optional
What to sort results by. Can be either created
, updated
, popularity
(comment count) or long-running
(age, filtering by pulls updated in the last month).
Notice: this is an option provided by github rest api. In this github action, we simply proxy this parameter (and the direction
paramter below). Check more here
Optional
The direction of the sort. Can be either asc
or desc
. Default: desc
when sort is created
or sort is not specified, otherwise asc
.
This github action doesn't set any default parameters.
Optional
Check if having auto-merge enabled in the PR is required, in order for the PR to
be considered. It defaults to true
, but if set to false
, all PRs are
considered for update (not just those with auto-merge enabled).
name: PR update
on:
push:
branches:
- 'master'
jobs:
autoupdate:
runs-on: ubuntu-latest
steps:
- name: Automatically update PR
uses: adRise/update-pr-branch@VERSION_YOU_WANT_TO_USE
with:
token: ${{ secrets.ACTION_USER_TOKEN }}
base: 'master'
required_approval_count: 2
require_passed_checks: true
allow_ongoing_checks: true
sort: 'created'
direction: 'desc'
require_auto_merge_enabled: true
Replace the VERSION_YOU_WANT_TO_USE
with the actual version you want to use, check the version format here
yarn
# this compile index.js to dest/init.js for running
yarn build
Note: You need to run yarn build
before commit the changes because when the action only use the compiled dest/index.js
.