目的
– Redmineでチケット更新したタイミングで、Mattermostのチャンネルに通知を飛ばす
環境
– redmineホスト(Ubuntu20.04) : redmine.local:3000
– Redmine version : 5.0.6
– Ruby version : 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
– redmine_messenger (Mattermost連携用プラグイン)
– Mattermostホスト : mattermost.local:4080
参考
– https://github.com/AlphaNodes/redmine_messenger
Mattermost側
– Redmine連携用のチャンネルとウェブフックを作成する
– rootユーザまたはシステム管理者の権限を持つ個人アカウントでMattermostにログインする。 ※ ウェブフックを作成したユーザが、Redmineからの通知ユーザになるので、rootユーザでログインして作成する方が好ましい
Redmine通知用チャンネルの作成
– Redmineからのチケット更新通知を受け取るためのチャンネルを作成する
– ログイン後の左メニュー上部「+」ボタンから「新しいチャンネルを作成する」をクリックする
– 名前:redmine
– 「チャンネルを作成する」をクリック
内向きのウェブフックを作成
– redmineからの通知を受け取るためのwebhookを作成する
– 左メニュー「≡」から「統合機能」をクリックする
– 内向きのウェブフック>内向きのウェブフックを作成する
– タイトル:redmine
– 前述で作成したチャンネル「redmine」を選択する
– 保存する
– ![redmine-mattermost_6_webhook2.png](/attachment/65b36cd76b92b4006ace9b14)
– 「内向きのウェブフック」一覧にredmineが表示されるので、URLをコピーしておく
Redmine側
redmine_messenger (Mattermost連携用プラグイン)のインストール
– パッケージのクローン
$ cd /var/www/redmine/
$ git clone https://github.com/AlphaNodes/redmine_messenger.git plugins/redmine_messenger
– Gemパッケージのインストール
$ bundle update
$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production
– redmineを再起動してプラグインを反映する
$ bundle exec rails server -e production -u puma -d
ps -ef | grep puma
GUIで、プラグインの設定を行う
– 以下のURLにアクセスする
– http://redmine.local:3000
– adminユーザでログインする
![1_LoginPage.png](/attachment/6576cef17a8991006b88280f)
– プラグインリストの確認
– Messengerプラグインがインストールされていること
– 上部メニュー「管理」>「プラグイン」
– ![redmine-mattermost_1_plugin.png](/attachment/65b367fc6b92b4006ace9ac6)
– Messengerプラグインの設定
– Messengerプラグインの「設定」をクリックする
– メッセンジャーのURL:MattermostでコピーしたwebhookのURLをペーストする
– http://mattermost.local:4080/hooks/xxxxxxxxxxxxxxxx
– メッセンジャーのユーザ名:root
– チケットの更新:チェックON
– 適用
– ![redmine-mattermost_2_plugin-setting.png](/attachment/65b368106b92b4006ace9ac7)
– ユーザに担当するプロジェクトを追加する
– 上部メニュー「管理」>「ユーザー」
– ユーザーを選択して、「プロジェクト」タブ>「プロジェクトの追加」からプロジェクトを追加する
– ![redmine-mattermost_3_user-project-add.png](/attachment/65b3681e6b92b4006ace9ac8)
– ホスト名の設定
– Mattermostに投稿された通知のリンク(機能 #)から、Redmineのチケットページへアクセスできるようにする
– 上部メニュー「管理」>「設定」
– ホスト名とパス:localhost:3000 -> redmine.local:3000
– 保存
正常性確認
– gitリポジトリへのコミットでチケットの更新と、Mattermostへの通知が機能するかを下記の手順で確認する
チケット更新のMattermost通知
– Redmineの特定プロジェクトを開く
– 新しいチケットを作成、または既存のチケットを更新する
– 「担当者」を個人ユーザに変更しておく
– チケット作成または更新する
– Mattermostのredmineチャンネルと、個人ダイレクトメッセージに通知が来ていることを確認
– 例)担当者の更新(前述手順でユーザーにプロジェクトを追加する必要あり)
– ![redmine-mattermost_4_mattermost.png](/attachment/65b368336b92b4006ace9ac9)
– 機能 #64のリンクを押すと、Redmineのチケットページに遷移できる
チケットのステータス更新
– コミットログに特別なキーワードを入れて、チケットを更新する ※後述の「Gitlabリポジトリ更新コマンド 」を参照
進捗率の更新
– コミットログのキーワードで、チケットの進捗率を更新する
– 設定
– 上部メニュー「管理」>「設定」>「リポジトリ」
– 「コミットメッセージ内でチケットの参照/修正」
– 参照用キーワードを設定する
– トラッカーに紐づけて、進捗率を設定する
– 参照用キーワードに「*」を追加すると、修正用キーワードの文字列は何でもOK。更新には「#チケット番号」のみ必要
– 修正用キーワードに10%~100%までのキーワードを新規作成する
作業時間の更新
– コミットログのキーワードで、作業時間の更新を行い、加算されるようにする
– 前提として、gitlabリポジトリを更新するユーザ名と、Redmineプロジェクトに所属するメンバーのログインIDが一致している必要がある
– Redmine側:上部メニュー「プロジェクト」>「プロジェクト名」>「設定」>「メンバー」
– メンバーをクリックして、ログインID「例:ebata」を確認する
– gitlab側:以下コマンドの出力結果を確認する
$ git config user.name
admin
– 設定
– 上部メニュー「管理」>「設定」>「リポジトリ」
– 「コミット時に作業時間を記録する」にチェック入れる
– 「作業時間の作業分類」については以下の2パターンで設定する
– パターン1:「開発作業」か「設計作業」を選ぶ
– パターン2:「デフォルト」のまま。別途デフォルト値の設定が必要
– 上部メニュー「管理」>「選択肢の値」
– 作業分類(時間管理)>設計作業or開発作業を選択する
– 「デフォルト値」にチェックを入れる
– 保存
Gitlabリポジトリ更新コマンド
$ git add .
$ git commit -m "90% #70 @2h30m"
$ git push
$ git commit -mのフォーマットは、
"[10%~100%] [#チケット番号] [@時分]"
↑進捗率(任意) ↑必須 ↑作業時間(任意)
文頭は、"[任意の文字] [10%~100%]"でも可。[]と[]の間に半角スペースが必要