Redmine

RedmineとMattermostの連携

2024年1月31日



目的

– 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を再起動してプラグインを反映する


$ .bin/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%]"でも可。[]と[]の間に半角スペースが必要

CATEGORIES & TAGS

Redmine,

Author:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

カテゴリー

むるし

フリーランスのインフラ系エンジニア。
備忘録で色々書いていきます。
お問い合わせは↓
mo-gyu@murci.net
LPIC303 Security
%d人のブロガーが「いいね」をつけました。