今までチケット管理も GitHub
で行っていたんですが、チケットは Issue
しか種類がなかったり、いろいろカスタマイズしても書き込める情報を分類しにくかったりで、チケット管理を Redmine
で行うようにしました。
その際に Redmine
のチケットと GitHub
のコミットの関連付ける必要が出てきたので、 Redmine
と GitHub
を連携させてみました。
Redmine
と GitHub
の連携手順をまとめてみたので、参考にしてみてもらえればと思います。
Redmine と GitHub の連携に必要なプラグインを追加する
GitHub
のコミットを検知して Redmine
にコミット情報を同期させるために必要なプラグインを追加します。
Redmine Github Hook plugin
というプラグインを追加します。
プラグインのソースコードを Redmine
の plugins
ディレクトリに配置します。
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
ユーザにファイルやコマンドに対するアクセス権や実行権限が付与されます。
パスワード無しでリポジトリをクローンするために GitHub
の Deploy key
の設定を行います。
設定方法についてはこちらを参考にしてもらえればと思います。
鍵を作成する際に、先頭部分に「 sudo -u apache
」を付けることを忘れないようにしてください。
リポジトリをクローンする
クローンする際に、 --bare
オプションをつけてサーバモードにする必要があります。
cd /path/to/redmine/repositories
sudo -u apache git clone --bare git@github.com:username/repository.git
Redmine にリポジトリの設定を行う
クローンしたリポジトリをプロジェクトのリポジトリに設定します。
「プロジェクトの設定」→「リポジトリ」→「新しいリポジトリ」から設定を行います。
GitHub に Webhook の設定を行う
GitHub
にプッシュされたら、 Redmine
サーバのリポジトリに通知するために GitHub
に Webhook
の設定を行います。
「 GitHub
のリポジトリの Settings
」→「 Webhooks
」→「 Add webhook
」から Webhook
の設定を行います。
Payload URL
は下記のルールとなります。
http[s]://あなたのRedmineのURL/githook?project_id=RedmineのプロジェクトID
チケットとコミットを関連付ける
公式サイトにも説明がありますので、そちらも参考にしてもらえればと思います。
プロジェクトのリポジトリからリビジョンを選択すると「関連するチケット」を追加することができるので、そこからチケットとコミットを関連付けることができます。
ただ、それだと手作業でいちいち関連付けやらないといけないので、プッシュしたら自動で関連付けできるようにしたいと思います。
「管理」→「設定」→「リポジトリ」を開くと「コミットメッセージ内でチケットの参照/修正」というところがありますので、そこの「参照用キーワード」をコミットメッセージに追加することで、コミットとチケットの関連付けを行うことができます。
コミットメッセージの書き方はこんな感じです。
refs #99
これだけでコミットとチケットの関連付けを行うことができます。
でも、これだとチケットのステータスまではコントロールできないので、コミットでチケットのステータスや進捗をコントロールしたい場合は、「コミットメッセージ内でチケットの参照/修正」の下にある一覧で「修正用キーワード」と「ステータス」「進捗率」を設定していく必要があります。
この設定を行うと、
fixed #99とコミット時にメッセージを書くとチケットのステータスと進捗率も更新してくれるようになります。
最後に
Redmine
と GitHub
を連携することで、 GitHub
の issue
のみでは管理が不十分になりがちな進捗管理ができるようになったり、 Redmine
のプラグイン次第でチケット管理以外のプロジェクト管理手法も導入できるようになります。
チケットとコミットが関連付けられることで、ソースコードの変更理由の確認も容易になります。
コメント