kc-review-bot

command module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 28, 2023 License: MIT Imports: 10 Imported by: 0

README ΒΆ

Review Reminder Bot

This is a fork for private needs, don't use it.


Action Go Report Card

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.

Installation

Precompiled Binaries

See the releases page for precompiled binaries.

Manually

It's also possible to install the latest release with go install:

go install github.com/sj14/review-bot

Example

Sample Output for Gitlab and Mattermost

Project Name

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 πŸ‘ @hulk

Ask Deadpool to join us
3 πŸ’¬ 3 πŸ‘ @batman

Repair the Helicarrier
3 πŸ’¬ @hulk @batman @groot @iron_man

Find Kingpin
2 πŸ’¬ 4 πŸ‘ You got all reviews, @daredevil.

Configuration

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"
}
Running

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

Command Line Flags

  -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

Templates

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.

Gitlab

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
}
Github

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
}

Documentation ΒΆ

The Go Gopher

There is no documentation for this package.

Directories ΒΆ

Path Synopsis
hoster

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL