Help us understand the problem. What is going on with this article?

RedmineとGitHubを連携

More than 1 year has passed since last update.

チケット管理はRedmine、ソース管理はGithubでやっていたのですが、チケットとコミットの関連付けが欲しくなったので、RedmineとGitHubを連携させることにしました。

よくあるネタですが、GitHubとの連携のところですこしつまずいたので、ちょっとまとめてみました。

RedmineのリポジトリとGitHub上のリポジトリを連動させる

プラグイン追加

下記を追加します。
https://github.com/koppen/redmine_github_hook

  • gemの追加
sudo gem install json
  • ソースの配置
cd <REDMINE_ROOT>/plugins
git clone https://github.com/koppen/redmine_github_hook.git
  • Redmineの再起動
cd <REDMINE_ROOT>/tmp
touch restart.txt

上記をしてから、redmineのサイトにアクセス。
管理ページ>プラグインに追加されていれば成功。

Redmineサーバ上にリポジトリをclone

GitHubのリボジトリをcloneします。apacheユーザがgit pullなどをできるような形にする。
ここでつまずいたのですが、sudo -u apache をつけることで解決できました。以降のコマンドは、その前提のものとします。

GitHubのdeploy key用の鍵作成

参照だけで良いので、デプロイキーに登録する公開鍵を作成します。

※ プロジェクト毎に別のリポジトリを連携させるには、deploy keyではできない。複数のリポジトリにアクセス権を持つ専用ユーザ1を作成して、そのユーザに対して公開鍵を登録すること。

ssh-keygen -t rsa

/var/www/.ssh に鍵を配置。(ownerをapacheに)
パスフレーズなし。
作成された公開鍵をGitHubリポジトリのSetting>Deploy Keys から登録
https://developer.github.com/guides/managing-deploy-keys/

git clone

--bare をつけて、サーバモードにする必要があるようです。

cd /opt/repos
 git clone --bare git@github.com:XXXXXXXXXXX/hoge.git

リモートの設定をして、fetchできるようにします。

git remote add origin git@github.com:<username>/<project>.git

Redmineのリポジトリ設定

上記で作ったリポジトリを、プロジェクトのメインリポジトリとして追加します。

プロジェクトの画面の設定>リポジトリ>新しいリポジトリ から、下記のように設定します

repo_setting.jpg

GitHubのWebhook

GitHubにpushされたら、redmineのリポジトリにそれを通知させるために、webhookの設定をします。手順はプラグインのreadmeに書いてあります。
下記のように、通知先のURLを設定します。

https://[your_redmine]/githook?project_id=[your_project_id]

チケットとコミット(リビジョン)の関連づけ

公式サイトにもありますが、簡単にやり方をまとめておきます。
http://redmine.jp/tech_note/subversion/

リビジョンから

リボジトリタブを開くと、リビジョンの一覧が見られます。
リビジョンをクリックすると「関連するチケット」というのがあり、そこの右端にある追加を押すと、チケット番号の入力フォームが出ます。それで、そのリビジョンとチケットを関連づけられます。

コミットから

管理>設定>リポジトリを開くと、「コミットメッセージ内でチケットの参照/修正」があります。
そこにある参照キーワードとチケット番号をコミットメッセージに含めると、そのチケットに関連づけができます。

image

refs #1234 hogeを修正 といれてコミットすると、#1234 のチケットに「関係しているリビジョン」というのが表示されるようになります。

まとめ

連携できると、Redmineの検索でコミットメッセージもひっかかるようになります。
どのチケットの議論でそういう実装をしたのか、このコミットはなんのための変更かなのか、といったことが追いやすくなります。

また、コミットするたびに「関係しているリビジョン」にどんどん追加されるので、進捗アピールのひとつになります。

仕様決めの経緯と実装を追跡しやすくなると、安心感が得られます。

参考サイト

http://hidechae.hatenablog.com/entry/2013/02/28/034126

http://qiita.com/kp_ohnishi/items/a15022efc6392ae2b51e

http://kentana20.hatenablog.com/entry/2014/03/30/090000


  1. GitHubでは上記のような、なんらかの自動化のためのアカウントをmachine-user と呼ぶようです。アカウント利用規約によると、個人でも組織でも、そういうのはひとつだけにするようにとのことです。 

n_slender
一応Javaエンジニアです。仕事の関係でPHP、Python、Rubyをやることも。開発環境を構築することもあるので、そのレベルでのインフラネタもたまに。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした