102
103

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RedmineとGitHubを連携

Last updated at Posted at 2015-07-10

チケット管理は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の検索でコミットメッセージもひっかかるようになります。
どのチケットの議論でそういう実装をしたのか、このコミットはなんのための変更かなのか、といったことが追いやすくなります。

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

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

参考サイト

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

102
103
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
102
103

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?