ZEALOTエンジニアブログ
Slack & Redmine

SlackにRedmineのチケット更新を通知する

Pocket

ここ数ヶ月弊社ではSlackというコミュニケーションツールを使っております。要はチャットなんですが、色々なサービスと連携できたり、コードを貼り付けるときに綺麗に色を付けてくれたり、プログラマには嬉しい機能が沢山あり、社内でもだいぶ浸透してきた感じがあります。プログラマに嬉しいといえば、HipChatもなかなか良かったんですが、見た目やSlackの勢いみたいなもの(個人の感想)から今はこっちをメインで使っています。

さて、Slackは色々なサービスと連携できると言いましたが、Redmineもその一つです。Redmineと連携することで、誰かがチケットを更新するとその内容をSlackのチャネルに流してくれるようになります。例えば、弊社ではHachikinというサービスを運営しているのですが、このプロジェクト用に#hachikinというSlackのチャネルを作っています。(チャネルとは、ある目的で会話するためのチャットルームのようなものです。)RedmineでHachikinの不具合や機能改善を行うためのチケットを登録・更新すると、#hachikinチャネルに通知され、リアルタイムに作業の状態が分かるわけです。(まぁ、これが多すぎると鬱陶しいという話はありますが、それはまた別の話ということで)

1. Slack側の設定

まず、以下からConfigure Integrationsを選択します。
general_setting_1

Add Service Integrations画面の下の方に「Incoming WebHooks」があるのでこれを選びます。

incoming_webhook_1

次に、通知先のチャネルを選択します(または新規で作成する場合、そのチャネルの名称を入力します)。ここではすでに登録されている#hachikinというチャネルを追加しています。

incoming_webhook_2_new

Add Incoming WebHookボタンを押すと、次の画面に「Your Unique Webhook URL」というものが表示されます。これは、Redmine側に設定することになりますので、コピっておきます。

incoming_webhook_3_key

最後に、画面下の方にあるIncoming Settingsで、このWebHookの分かりやすい名前を付けておきます。ここではRedmine Hooksとしました。Save Integrationを押して保存しておきます。

incoming_webhook_4_setting

これで、Slack側の設定は完了です。

2. Redmine側の設定

Redmineでは、Slack chat plugin for Redmineというプラグインを利用します。まず、以下のようにインストールしましょう。

Redmineのpluginsディレクトリに移動し、git cloneしてきます。

redmine_slackディレクトリ移動してbundle installします。

ここでRedmineを再起動しておきます。

次に、Redmineプラグインの設定を行います。これは、プラグインの設定画面があるのでそちらから行います。
まず、Redmineの「管理」から「プラグイン」を選択します。以下のようにRedmine Slackが表示されていると思うので「設定」をクリックします。

redmine_1_setting

次に、以下のように内容を入力します。

redmine_2_setting

  • Slack API URL – SlackのIncoming WebHookを作成した時に表示されたURLをここに指定します
  • Slack Channel – ここでは「-(ハイフン)」を指定しています。これについてはあとで説明します。
  • Slack Icon – アイコンのURLを指定します。ここではデフォルトをそのまま利用します。
  • Slack Username – Slackにメッセージを投稿する際のユーザ名を指定します。

Slack Channelで「-」を指定しているのは、Redmineのプロジェクトごとに指定したSlackのチャネルへ通知を行うためです。逆に、ここで「#hachikin」を指定すると、すべてのプロジェクトの通知が#hachikinにくるようになります。

プロジェクトごとに通知させたい場合は更に、上の画像にある「project custom field」をクリックしてカスタムフィールドを追加する必要があります。
以下のように「名称」にはSlack Channelと指定します。この名前は重要なので間違わないように注意してください。

redmine_3_custom_field

最後に、Redmineのプロジェクトの「設定」に移動します。以下のようにSlack Channelが表示されているはずなので、チャネル名「#hachikin」を設定して保存します。

redmine_4_project_setting

以上で完了です。

3. 連携後

Redmineの「Hachikin」プロジェクトでチケットが追加・更新されると以下のようにSlackの#hachikinチャネルへ通知されるようになりました。

slack_view

余談

このRedmine連携の場合は外部のサービス(Redmine)からSlackに通知するようなイメージで動作しますが、逆にSlackから外部のサービスへ通知を行うこともできます。これらはSlackのIntegrations設定のOutgoing WebHooksやSlash Commandというサービスを使うことで実現できます。

例えば、Hachikinのデプロイを行うコマンドをSlash Commandsで実現した場合、以下のようなコマンドをSlackから入力することで外部のデプロイサービスと連携し簡単にデプロイを行えるようになります。

夢が広がりますね。どう広がるかというと、こちらの記事を見るといいかもしれません。チームの効率を最大化!nanapi流ChatOpsの取り組み

Slash Commandについてはまた別の機会に・・・。

Pocket

One thought on “SlackにRedmineのチケット更新を通知する

  1. […] プロジェクトをSlackのチャットルームごとに通知 SlackにRedmineのチケット更新を通知する – ZEALOTエンジニアブログ […]

Comments are closed.