RedmineをGitHubと連携させる
概要
先日インストールしたRedmineだが、gitレポジトリの登録はできるものの、その機能は十分とは言えない状況だ。
svnレポジトリの場合はユーザ名・パスワードを使って自動的にcheckoutできるようなのだが、gitレポジトリではそれができないようだ。 具体的には、gitの場合にはシステム上、すなわちサーバ上に存在するレポジトリのみを登録できるようになっている。いまだ開発途上ということだろう。
このため、GitHubと連携させるためには一手間が必要となる。
Redmineへのweb-hookプラグインの導入
git
が入っていなかったらsudo apt-get install git-core
で導入しておく。
GitHubからのweb-hookを使うためにはjsonを処理する必要があるため、json用のgemを導入しておく。
% alias sr="sudo -u redmine"
% cd /home/redmine/redmine
% sr vi Gemfile.local
gem "json" ← ★追加する
% sr bundle install --without development test
自分の環境ではjson
が2回以上あると怒られたので、すでにどこかで書いてあったようだ。実害はないのでいいが。
GitHub hookプラグインを導入する。
% cd /home/redmine/redmine/plugins
% sr git clone https://github.com/koppen/redmine_github_hook.git
% cd redmine_github_hook
% sr RAILS_ENV=production bundle install --without development test
% cd ../..
% sr RAILS_ENV=production bundle install --without development test
Redmineを再起動する。
% sudo /etc/init.d/redmine restart
Redmineに管理者アカウントでログインすれば、管理>プラグインでRedmine Github Hook plugin
が見えるはず。
RedmineでのGitHubレポジトリの追加
GitHubのレポジトリを直接持ってくることはできないため、サーバ上でcloneしておく必要がある。 ここでは非公開レポジトリを想定してデプロイキーを使ってcloneすることにする。
まずはssh鍵を作成。nginx+unicornでredmineを起動しているので、redmineを実行しているユーザはredmine
である。
このユーザ用のssh鍵を作成し、デプロイキーとして登録する。
ssh鍵の作成ではパスフレーズを設定してはいけない。
% cd /home/redmine
% alias sr="sudo -u redmine"
% sr mkdir .ssh
% sr chmod 700 .ssh
% sr ssh-keygen -t ecdsa
できあがった公開鍵/home/redmine/.ssh/id_ecdsa.pub
をGitHubの当該レポジトリにデプロイキーとして登録する。
レポジトリ用のディレクトリを作成してcloneしておく。
% sr mkdir repos
% cd repos
% sr git clone --bare git@github.com/xxxxxx/hoge.git
Redmineにcloneしたレポジトリを追加する。
パスは/home/redmine/repos/hoge.git
とすれば良い。
この時点でレポジトリが表示できるはず。
あとはGitHubにweb-hookを登録すればOK。ここから未テスト。
URLはhttp(s)://debianサーバ/github_hook?project_id=[プロジェクトの識別子]
とする。
当然ながらdebianサーバは外部からアクセスできるように設定しておく。