Bitbucketの更新をHubot経由でSlackに通知する


1.概要

  • Bitbucketの更新をHubot経由でSlackに通知する
  • 通知対象:PullRequest, Issue, Repositoryの各イベント

2.動機

  • 既存のSlack Bitbucket Integrationでは、Repository Push のみしか対応していない
    • どうせなら、全部通知してほしい(特にPullRequest周り)
  • とういうことで、作った

3.導入方法

前提

  • Hubot => Slackの連携はできている(ping -> pongができればok)

npm導入

  • hubotディレクトリ内(binとかpackage.jsonがあるとこ)で下記コマンド
npm install bitbucket2slack --save
  • external-scripts.json に下記を追加する
external-scripts.json
"bitbucket2slack"

Bitbucketのwebhook設定

  • Tilteは適当にわかりやすいものを入力 例)「slack_notification」
  • URLには以下を設定する
{hubot_url}/bitbucket2slack

例)http:example.com:8080/bitbucket2slack
  • 通知してほしい更新のみ Triggersから選択する

通知先指定(2つの方法)

  • Getパラメータでの指定(優先)
    http:example.com:8080/bitbucket2slack?destination=bb-notification-channel
    http:example.com:8080/bitbucket2slack?destination=t_mimura

  • 環境変数での指定
    export HUBOT_BITBUCKET2SLACK_DESTINATION = "bb-notification-channel"
    export HUBOT_BITBUCKET2SLACK_DESTINATION = "private-kosokoso-heya"

通知先(destination)はCHANNEL, PRIVATE_GROUP, DM(user_name)に対応している

4.通知例


色はデフォルトから変更している(後述)

5.オプション(追加機能)

色の指定方法

Action Type defaultColor
Pullrequest Create information LightBlue
Pullrequest Approved good Green
Pullrequest Approval Removed danger Red
Pullrequest Merged good Green
Pullrequest Declined danger Red
Pullrequest Comment... warning Orange
Issue ... information LightBlue
Repository Push information LightBlue
Repository Fork information LightBlue
  • Getパラメータでの指定(優先)
    http:example.com:8080/bitbucket2slack?good_color=000000
    http:example.com:8080/bitbucket2slack?warning_color=ff0000&danger_color=f0f

※ colorに # は含めない
ダメな例).../bitbucket2slack?warning_color=ff0000&danger_color=#f0f

  • 環境変数での指定
    export HUBOT_BITBUCKET2SLACK_GOOD_COLOR = "000"
    export HUBOT_BITBUCKET2SLACK_INFOMATION_COLOR = "ffff00"

6.雑多

  • Slack通知の整形や通知情報の追加などは継続的に続ける予定
  • Githubに投稿したので、変な英語あったら教えてください(英語力のなさが露呈してる...)
  • 今後の課題として、Bitbucket-Slack間のユーザー名の差異をどうやって吸収するか(対応マップをJSONで書いておくくらいしか思いつかない)
  • Backlog版も作りました( 記事にするかは未定 Backlogの更新をHubot経由でSlackに通知する)

6.参考/利用したURL

7.追記(2/26)

(アリガトウゴザイマシター