[Redmine]GitHub と連携する

今までチケット管理も GitHub で行っていたんですが、チケットは Issue しか種類がなかったり、いろいろカスタマイズしても書き込める情報を分類しにくかったりで、チケット管理を Redmine で行うようにしました。

その際に Redmine のチケットと GitHub のコミットの関連付ける必要が出てきたので、 RedmineGitHub を連携させてみました。

RedmineGitHub の連携手順をまとめてみたので、参考にしてみてもらえればと思います。

Redmine と GitHub の連携に必要なプラグインを追加する

GitHub のコミットを検知して Redmine にコミット情報を同期させるために必要なプラグインを追加します。

Redmine Github Hook plugin というプラグインを追加します。

プラグインのソースコードを Redmineplugins ディレクトリに配置します。

cd /path/to/redmine/plugins
git clone https://github.com/koppen/redmine_github_hook.git

ソースコードが配置できたら Redmine を再起動します。

cd /path/to/redmine/tmp
touch restart.txt

Redmine を再起動してから Redmine のサイトにアクセスして、「管理」→「プラグイン」の順にアクセスし、プラグインの一覧に追加されていれば成功です。

Redmine サーバに GitHub のリポジトリをクローンする

GitHub のリポジトリを Redmine サーバにクローンします。この際、 apache ユーザが git pull などをできるようにする必要があります。コマンド実行時に「 sudo -u apache 」をつけることで、 apache ユーザにファイルやコマンドに対するアクセス権や実行権限が付与されます。

パスワード無しでリポジトリをクローンするために GitHubDeploy key の設定を行います。

設定方法についてはこちらを参考にしてもらえればと思います。

鍵を作成する際に、先頭部分に「 sudo -u apache 」を付けることを忘れないようにしてください。

リポジトリをクローンする

クローンする際に、 --bare オプションをつけてサーバモードにする必要があります。

cd /path/to/redmine/repositories
sudo -u apache git clone --bare git@github.com:username/repository.git

Redmine にリポジトリの設定を行う

クローンしたリポジトリをプロジェクトのリポジトリに設定します。

プロジェクトの設定」→「リポジトリ」→「新しいリポジトリ」から設定を行います。

Redmine Github 1

GitHub に Webhook の設定を行う

GitHub にプッシュされたら、 Redmine サーバのリポジトリに通知するために GitHubWebhook の設定を行います。

GitHub のリポジトリの Settings 」→「 Webhooks 」→「 Add webhook 」から Webhook の設定を行います。

Redmine Github 2

Payload URL は下記のルールとなります。

http[s]://あなたのRedmineのURL/githook?project_id=RedmineのプロジェクトID

チケットとコミットを関連付ける

公式サイトにも説明がありますので、そちらも参考にしてもらえればと思います。

プロジェクトのリポジトリからリビジョンを選択すると「関連するチケット」を追加することができるので、そこからチケットとコミットを関連付けることができます。

ただ、それだと手作業でいちいち関連付けやらないといけないので、プッシュしたら自動で関連付けできるようにしたいと思います。

管理」→「設定」→「リポジトリ」を開くと「コミットメッセージ内でチケットの参照/修正」というところがありますので、そこの「参照用キーワード」をコミットメッセージに追加することで、コミットとチケットの関連付けを行うことができます。

Redmine Github 3

コミットメッセージの書き方はこんな感じです。

refs #99

これだけでコミットとチケットの関連付けを行うことができます。

でも、これだとチケットのステータスまではコントロールできないので、コミットでチケットのステータスや進捗をコントロールしたい場合は、「コミットメッセージ内でチケットの参照/修正」の下にある一覧で「修正用キーワード」と「ステータス」「進捗率」を設定していく必要があります。

Redmine Github 4

この設定を行うと、

fixed #99とコミット時にメッセージを書くとチケットのステータスと進捗率も更新してくれるようになります。

最後に

RedmineGitHub を連携することで、 GitHubissue のみでは管理が不十分になりがちな進捗管理ができるようになったり、 Redmine のプラグイン次第でチケット管理以外のプロジェクト管理手法も導入できるようになります。

チケットとコミットが関連付けられることで、ソースコードの変更理由の確認も容易になります。

参考サイト

コメントする

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