This project is alpha quality. The interface may change in the future.
The CLI tool to notify Github issues and pull requests to Slack with color like following. It is useful for review reminder and checking issues regularly.
$ go get github.com/shibayu36/notify-issues-to-slack
$ notify-issues-to-slack --help
$ docker pull shibayu36/notify-issues-to-slack
$ docker run --rm shibayu36/notify-issues-to-slack -help
Built binaries are available on gihub releases. https://github.com/shibayu36/notify-issues-to-slack/releases
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... -query='repo:shibayu36/notify-issues-to-slack state:open label:"bug"' -text="Please check bug reports @shibayu36"
You can post issues and pull requests matched by -query
to slack. By -query
options, you can use all syntax on Searching issues and pull requests document.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query='repo:shibayu36/notify-issues-to-slack state:open label:"bug"' \
-text="Please check bug reports @shibayu36" \
-channel="bug-report-channel" # slack channel to be posted
Github doesn't support relative time query, but -query
option supports this.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query='repo:shibayu36/notify-issues-to-slack state:open label:"bug" created:<now-1w' \
-text="Please check bug reports made more than a week ago @shibayu36"
You can colorize issue attachments using -danger-filter
and warning-filter
. Like -query
option, you can use github's search query. Following example colorize an issue danger if its last update is a week ago, and colorize an issue warning if its last update is three days ago.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query='repo:shibayu36/notify-issues-to-slack state:open label:"bug"' \
-danger-filter='updated:<now-1w' \
-warning-filter='updated:<now-3d'
Of course, you can customize slack username and icon.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query='repo:shibayu36/notify-issues-to-slack state:open label:"bug"' \
-username='bug reporter' \
-icon-emoji=':bug:'
If you use Github Enterprise, please specify -github-api-url
.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-github-api-url='https://ghe.example.com/api/v3'
-query=...
If you want to customize text's and attachment's format posted to slack, -text
and -issue-text-format
options are useful. You can use text/template syntax in -text
and -issute-text-format
.
[]github.Issue
is passed to -text
as .
, and github.Issue
is passed to -issue-text-format
as .
. github.Issue
struct is described in go-github document.
For example, you can use following command if you want to post "please review them" when issues are found, and to post "no review request" when issues are not found by your query
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query=...
-text="{{ if . }}please review them @channel{{ else }}no review request{{end}}"
And following command customizes each issue's format.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query=...
-issue-text-format="{{.GetTitle}}: created by @{{.GetUser.GetLogin}} at {{.GetCreatedAt}}"
Following command colorizes warning when no reviewer is assigned, and colorizes danger when no reviewer is assigned since two days ago.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query='repo:shibayu36/notify-issues-to-slack label:"review required" state:open' \
-warning-filter="type:pr review:none" \
-danger-filter=""updated:<=now-2d type:pr review:none"
Following command notifies issues with "In Progress" label but without assignee.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query='repo:shibayu36/notify-issues-to-slack label:"In Progress" state:open no:assignee' \
-text='Do you forget deciding the assignment?'
Following command notifies pull requests assigned me as reviewer.
$ notify-issues-to-slack -github-token=... -slack-webhook-url=... \
-query='repo:shibayu36/notify-issues-to-slack state:open type:pr review-requested:shibayu36'