For an enhanced SaaS version, visit https://www.review-bot.com/
review-bot
sends a reminder message to Mattermost or Slack with all open pull/merge requests which need an approval. Well suitable for running as a cron-job, e.g. for daily reminders.
This tool is still beta. The usage with Gitlab and Mattermost is more mature while the Github and Slack usage is an early preview.
See the releases page for precompiled binaries.
It's also possible to install the latest release with go install
:
go install github.com/sj14/review-bot
How-To: Got reminded? Just normally review the given merge request with 👍/👎 or use 😴 if you don't want to receive a reminder about this merge request.
Support SHIELD
1 💬 3 👍 @hulkAsk Deadpool to join us
3 💬 3 👍 @batmanRepair the Helicarrier
3 💬 @hulk @batman @groot @iron_manFind Kingpin
2 💬 4 👍 You got all reviews, @daredevil.
The reviewers.json
file contains the gitlab/github user name as key and the mattermost name or slack user id as value.
Example 1: github/gitlab username and mattermost name
{
"hulk51": "@hulk",
"tonystark": "@iron_man",
"groot": "@groot",
"darkknight": "@batman",
"lawyer": "@daredevil"
}
Example 2: github/gitlab username and slack id
{
"hulk51": "@U024BE7LH",
"tonystark": "U0G9QF9C6",
"groot": "@U0JA38A",
"darkknight": "@U0QM9L4",
"lawyer": "@U0JMB8O1"
}
Get all open merge requests from the Gitlab project owner/repo
and post the resulting reminder to the specified Mattermost channel:
review-bot -host=$GITLAB_HOST -token=$GITLAB_API_TOKEN -repo=owner/repo -webhook=$WEBHOOK_ADDRESS -channel=$MATTERMOST_CHANNEL
-channel string
mattermost channel (e.g. MyChannel) or user (e.g. @AnyUser)
-host string
host address (e.g. github.com, gitlab.com or self-hosted gitlab url)
-repo string
repository (format: 'owner/repo'), or project id (only gitlab)
-reviewers string
path to the reviewers file (default "examples/reviewers.json")
-template string
path to the template file
-token string
host API token
-webhook string
slack/mattermost webhook URL
We use the Go template package for parsing. Depending on which backend you use, there are different fields you can use. Check the examples folder for a quick overview.
Accessing {{.Project}}
gives you access to these fields.
While {{range .Reminders}}
gives you access to {{.MR}}
which is the merge request. {{.Missing}}
is the Slack/Mattermost handle of the missing reviewer. {{.Discussions}}
is the number of open discussion. {{.Owner}}
is the Mattermost name of the assignee or otherwise the creator of the merge request. {{.Emojis}}
is a map with the reacted emoji's and their count on this merge request.
The corresponding Go structs:
type data struct {
Project gitlab.Project
Reminders []reminder
}
type reminder struct {
MR *gitlab.MergeRequest
Missing []string
Discussions int
Owner string
Emojis map[string]int
}
Accessing {{.Repository}}
gives you access to these fields.
While {{range .Reminders}}
gives you access to {{.PR}}
which is the pull request. {{.Owner}}
the Mattermost name of the PR creator or the Github login as fallback. {{.Missing}}
is the Slack/Mattermost handle of the missing reviewer.
type data struct {
Repository *github.Repository
Reminders []reminder
}
type reminder struct {
PR *github.PullRequest
Missing []string
Owner string
}