pull-request-conditional-merge
v1.1.0
Published
Merge GitHub pull request when CI passes
Downloads
2
Readme
Pull Request Conditional Merge
This library is to implement a bot to merge your pull request when CI passes.
You CI does not finish instantly; running tests may take tens of minutes, or many jobs may be queued already. Then, you may have said something like this:
Okay, I will merge this PR once CI passes.
This does not make you feel nice. You have to remember PRs you have to merge it later. You may forget a PR to be merged, and it may be fixing a simple typo but expected to be deployed as soon as possible.
You definitely need a bot to merge PR automatically, when CI got green.
This library is to merge PR when:
- The PR is labeled with
ShipIt
(you can customize the name of label) - All CIs associated with the PR succeeded
Getting Started
1. Install
$ npm install --save pull-request-conditional-merge
2. Add new action to your web app (maybe Hubot?)
PullRequestConditionalMerge = require("pull-request-conditional-merge")
PullRequestConditionalMergeExpress = require("pull-request-conditional-merge/express")
module.exports = (robot) ->
github = require('githubot')(robot)
robot.router.post "/merge-pullrequest", PullRequestConditionalMergeExpress.action(PullRequestConditionalMerge, github, robot.logger, 'your-company')
You can pass additional setup function which takes PullRequestConditonalMerge
object to action
.
action = PullRequestConditionalMergeExpress.action PullRequestConditionalMerge, github, robot.logger, 'your-company', pr ->
pr.label = 'LetBotMerge'
3. Setup a status hook on your GitHub repo
status
hook is the one you need.
Customization
Label name
If you do not like ShipIt
label, you can use your own label name.
PullRequestConditionalMerge.find github, owner: owner, repo: repo, sha: sha, (pr) ->
pr.label = "MergeIt"
Logger
You can assign logger
property.
debug
is the only level the library is using now.
PullRequestConditionalMerge.find github, owner: owner, repo: repo, sha: sha, (pr) ->
pr.logger = {
debug: (message) -> console.log(message)
}
With hubot:
PullRequestConditionalMerge.find github, owner: owner, repo: repo, sha: sha, (pr) ->
pr.logger = robot
Commit message
The default commit message is:
Merge pull request #3381, via bot
Assign a function to commitMessage
to customize the message:
PullRequestConditionalMerge.find github, owner: owner, repo: repo, sha: sha, (pr) ->
pr.commitMessage = -> "Merge by bot"
License
The library is available as open source under the terms of the MIT License.