今までチケット管理も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
のプラグイン次第でチケット管理以外のプロジェクト管理手法も導入できるようになります。
チケットとコミットが関連付けられることで、ソースコードの変更理由の確認も容易になります。
参考サイト

コメント