バグ管理システムのRedmine、システム開発では欠かせないツールですが、今回さくらのVPSを借りてそこに自分用のRedmineをインストールしてみました。
バージョン管理はGitでやることにしましたが、できればリモートレポジトリを自鯖上に構築するのは避けたい。Githubの非公開レポジトリをRedmineから参照する方法を調べてみました。 ちなみにRedmineの認証機能以外のアクセス権限がかかっていない前提です。外部からRedmineを参照できない環境の場合は使えないみたいです。
環境
- さくらのVPS CentOS5.5 x86_64
- Rails2.3.5
- Passenger3.0.2
- git1.7.3
- Redmine1.1.0
です。
RedmineのインストールはRedmine 1.0をCentOSにインストールする手順 | Redmine.JP Blogあたりを参考にPassengerで動作済みです。
次にさくらのVPSにgitをインストールします。yumでインストールすると古いバージョンが入るので、ソースコンパイルで。 最新版はGit – Fast Version Control Systemから入手
cd /usr/local/src
wget http://kernel.org/pub/software/scm/git/git-1.7.3.5.tar.bz2
tar jxvf git-1.7.3.5.tar.bz2
cd git-1.7.3.5
./configure
make
make install
これでgitはインストール完了ですが、Redmineからgitが参照できなかったので以下のファイルのGIT_BINの値をwhich gitで表示されるパスに修正。
vi <REDMINE_ROOT>/lib/redmine/scm/adapters/git_adapter.rb
# Git executable name
# GIT_BIN = “git” 変更前
GIT_BIN = “/usr/local/bin/git” #変更後
2012年2月12日追記
<REDMINE_ROOT>/config/configuration.yml
で設定できるようです。
scm_git_command:
となっているところを
scm_git_command: /usr/local/bin/git
としてやり、Redmineを再起動してやればOK。
touch <REDMINE_ROOT>tmp/restart.txt
ここからが本題です。 cronを使って定期的にGithubのレポジトリと同期する方法もありますが、git pushした瞬間にRedmine上に反映されるように、Redmineのプラグインを使用します。 最初にも書きましたが、Redmineが外部から参照できない環境にある場合は使えません。
gem install json
cd <REDMINE_ROOT>
ruby script/plugin install git://github.com/koppen/redmine_github_hook.git
touch tmp/restart.txt #Passengerを再起動
続いてGithub上に作成してあるレポジトリーをclone
mkdir /home/repos/
cd /home/repos
git clone https://<USER_NAME>@github.com/<USER_NAME>/<PROJECT_NAME>.git
ここからはRedmineの設定画面とGithubの設定画面から作業。まずはRedmineでプロジェクトを作成
プロジェクトの「設定」>「レポジトリ」を選択し
バージョン管理システムのプルダウンでGitを選択
/path/to/git_directory
のテキストボックスに/home/repos/<PROJECT_NAME>/.git
を入力する。
レポジトリの管理画面>左メニューから「サービスフック」を選択>“Available Service Hooks”から「Post-Receive URL」を選択>URLに<REDMINE_URL>/github_hook
を指定。
以上で設定作業は終わり。後はGithub上のレポジトリにgit pushすればRedmineにも変更が反映されます。