Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maxkomarychev/merge-pal-action
GitHub Action that automatically merges your pull request!
https://github.com/maxkomarychev/merge-pal-action
github github-action github-actions merge workflow
Last synced: 6 days ago
JSON representation
GitHub Action that automatically merges your pull request!
- Host: GitHub
- URL: https://github.com/maxkomarychev/merge-pal-action
- Owner: maxkomarychev
- License: mit
- Created: 2019-10-29T20:07:38.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T23:42:48.000Z (almost 2 years ago)
- Last Synced: 2024-10-26T12:35:43.526Z (8 days ago)
- Topics: github, github-action, github-actions, merge, workflow
- Language: JavaScript
- Homepage:
- Size: 346 KB
- Stars: 32
- Watchers: 2
- Forks: 11
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-actions - Merge Pal - Automatically Update and Merge PRs
- fucking-awesome-actions - Merge Pal - Automatically Update and Merge PRs
- awesome-workflows - Merge Pal - Automatically Update and Merge PRs
README
# Merge Pal
This action will help your prs to get merged!
# Contents
- [Features](#features)
- [Usage](#usage)
- [Note about tokens](#note-about-tokens)
- [Quick start](#quick-start)
- [Configuration](#configuration)# Features
- relises on mergability rules defined in your repository
- automatically updates your PR to be up to date with base branch
- supports white and black lists through labels
- supports various types of merge: normal, squash and rebase
- integrates seamlessly into GitHub Actions workflows as well as other 3rdparty checks# Usage
## Note about tokens
Due to existing restriction workflows can not trigger each other if they are
authorized with `secrets.GITHUB_TOKEN`. For instance if you are using workflows that runs when code is pushed to master it will not be triggered if `secrets.GITHUB_TOKEN` is used to authorize Merge Pal. In such a scenarion you have to create [personal access token](https://github.com/settings/tokens) and use it instead.```yml
- uses: maxkomarychev/[email protected]
with:
token: ${{ secrets.MY_USER_TOKEN }}
```## Quick Start
1. Specify desired mergeability rules in branch settings in your repository
2. Create workflow to handle various events that affect mergeability of PR (`.github/workflows/merge-pal-events.yml`):
```yml
name: Merge Pal (events)on:
push: {} # update PR when base branch is updated
status: {} # try to merge when other checks are completed
pull_request_review: # try to merge after review
types:
- submitted
- edited
- dismissed
pull_request: # try to merge if labels have changed (white/black list)
types:
- labeled
- unlabeledjobs:
# thats's all. single step is needed - if PR is mergeable according to
# branch protection rules it will be merged automatically
mergepal:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: maxkomarychev/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}```
3. Add Merge Pal to the end of your existing check (if any) with GitHub Actions
```yml
name: Merge Pal (PR)on:
pull_request:
types:
- synchronize
- openedjobs:
test-this: # test one things
runs-on: ubuntu-latest
steps:
- run: echo "All ok"
test-that: # test other things
runs-on: ubuntu-latest
steps:
- run: echo "All ok"
mergepal-merge: # run merge pal in the end
runs-on: ubuntu-latest
needs:
# make sure all required jobs are listed here
- test1-this
- test1-that
steps:
- uses: actions/checkout@v1
- uses: maxkomarychev/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}```
## Configuration
Various aspects of Merge Pal's behavior are configured thorugh configuration file.
Create file `.mergepal.yml` in root folder of your repo.
It can hold the following fields:| field | type | description |
| --- | --- | --- |
| whitelist | string[] | whitelisted labels to perform automerge |
| blacklist | string[] | blacklisted labels to forbid automerge |
| method | "merge" \| "squash" \| "rebase" | method to use when merging |example:
```yml
whitelist:
- good-to-merge
blacklist:
- wip
- do-not-merge
method: squash
```