A GitHub App built with Probot for approving pull requests automatically
# Install dependencies
npm install
# Run typescript
npm run build
# Run the bot
npm start
# Run tests, don't forget to run `npm run build` beforehand
npm run test
This app requires Write code
permissions in order not to have issues with approving PRs.
Repository administrators can require that all pull requests receive a specific number of approving reviews from people with write or admin permissions in the repository or from a designated code owner before they're merged into a protected branch.
...
You won't be able to merge your pull request until the required number of reviewers with write or admin permissions in the repository approve your pull request's changes in their review.
More about it can be found on Github Help.
This application runs on GitHub Actions.
Create new file in your directory .github/workflows/autoapproval.yml
and add the following configuration.
on:
pull_request:
types: [opened, reopened, labeled, edited]
pull_request_review:
types: [dismissed]
permissions:
contents: read
pull-requests: write
jobs:
autoapproval:
runs-on: ubuntu-latest
name: Autoapproval
steps:
- uses: dkhmelenko/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
In order to use the bot, the config file should be provided. Config file should be defined in your repository. Config file is the yml file with the path .github/autoapproval.yml
. The file should have at least 3 mandatory entries: from_owner
, required_labels
and apply_labels
.
mandatory
Defines the list of users, whos pull requests should be approved automatically. For example:
from_owner:
- dkhmelenko
- quongeri
Assign an empty array if you want to approve PRs from any user (example: from_owner: []
).
mandatory
Defines the list of labels on PR, which should be present for approving PR automatically. For example:
required_labels:
- ready
Assign an empty array if you want to approve PRs without any label (example: required_labels: []
).
Defines the behavior how required_labels
should be treated.
If nothing specified, then all labels from required_label
are mandatory.
If the value set to one_of
, then it's enough to have only of the required_labels
to get approval.
Defines the list of labels on PR, which will prevent the PR from being automatically approved. For example:
blacklisted_labels:
- wip
Assign an empty array if you do not want to blacklist any labels.
mandatory
Defines the list of labels on PR, which should be added once PR was approved automatically. For example:
apply_labels:
- merge
Assign an empty array if no labels should be applied to PRs (example: apply_labels: []
).
NOTES:
- If label doesn't exist, it will not be created. In order to apply the label after approving PR automatically, you need to define the label beforehand.
- If PR already contains a review from this bot, new approval will not happen. Except the case when review was dismissed.
Defines labels for which the bot should enable auto merging for the pull request. This will automatically merge the PR after approving it when all checks passed.
The following example with merge PR with the method "Merge" on GitHub:
auto_merge_labels:
- auto-merge
You can also use "Squash & Merge" as merge method for a given list of labels:
auto_squash_merge_labels:
- auto-squash-merge
The same is true for "Rebase & Merge":
auto_rebase_merge_labels:
- auto-rebase-merge
NOTES:
- the
Allow auto-merge
setting must be enabled for the repository. - it is enough to use only one of the options:
auto_merge_labels
,auto_squash_merge_labels
orauto_rebase_merge_labels
- the repository should have enabled the merge method
To release new version of the app, the following steps are required:
- compile Node.js module into a single file by running the following command
ncc build index.js --license licenses.txt
- tag new release and push tags
git tag -a -m "New action release" v1.1
git push --tags
If you have suggestions for how autoapproval could be improved, or want to report a bug, open an issue! We'd love all and any contributions.
For more, check out the Contributing Guide.
ISC © 2018 Dmytro Khmelenko