追記(2016/1/20)
タイポしてたみたいですね、すみません。
「Redmineに Redmine Github Hook Pluginをインストールする。」の項目で、redmine_github_hook.gitのurlをミスっていたようです。
指摘してくれた方、ありがとうございます。
#前提
- RedmineとGitlabが別サーバで用意されている。
- Gitlabへgitユーザが存在し、developerグループへ所属している。
- ファイルパスなどはデフォルトのものを利用しているので、適宜読み替えてください。
#Redmineに Redmine Github Hook Pluginをインストールする。
次のコマンドを実行。
cd /opt/redmine/plugins
git clone git://github.com/koppen/redmine_github_hook.git
touch /opt/redmine/tmp/restart.txt
ブラウザでredmineにアクセスするとredmineが再起動され、プラグインがインストールされる。
#プロジェクトにリポジトリを設定
Redmineの対象プロジェクト(Sampleプロジェクトとする)の設定 > リポジトリから新しいリポジトリを設定する。
※ここでは、bareかつローカルなリポジトリしか設定できない。そのため、redmineとgitlabのサーバが別々に存在する場合、以下の作業をする必要がある。
##Gitlabサーバからアクセスするためのユーザを用意
useradd -m redmine-git
rsa鍵認証により、Gitlabサーバのgitユーザからこのユーザに対しパスワードなしでログインできるようにしておく。
##対象プロジェクトをRedmineサーバにクローン
mkdir -p /var/git/repos/
cd /var/
chown redmine-git:redmine-git git -R
su redmine-git
cd /var/git/repos
git clone git@gitlab-server.com:sample.git
##プロジェクトにリポジトリを設定
プロジェクトに対し、2.2でクローンしたリポジトリを設定する。
Redmineのプロジェクトページにリポジトリの項目があるので、そこで指定する。
##Gitlabへコミット > Redmineのリポジトリへ反映
このままではGitlabにあるリポジトリとRedmineのリポジトリが連携されないので、pushされたらRedmineサーバの方へ反映させてやる必要がある。
Gitlabサーバの方で、custom githookを利用しコミット直後にRedmineサーバの方へpushしてやるようにする。
cd /var/opt/gitlab/git-data/repositories/sample.git
mkdir custom_hooks
touch custom_hooks/post-receive
chown git:developer custom_hooks
chown git:developer custom_hooks/post-receive
chmod +x custom_hooks/post-receive
vi custom_hooks/post-receive
post-receiveの中身は以下
# すべてのブランチをredmineサーバへpush
git push ssh://redmine-git@myredmine.com/var/git/repos/sample.git refs/heads/*:refs/heads/*
以上の行程で、別サーバに存在するGitlabのリポジトリとRedmineのリポジトリの連携はできた。
#GitlabへRedmineとの連携を設定する。
Sampleプロジェクトの Settings > WebHooks へRedmineのWebhookを設定する。
URLは以下のようにする({project_id}はRedmineでリポジトリを登録する時に設定した識別子)。
http://myredmine.com/github_hook?project_id={project_id}
また Settings > ServiciesのRedmineを設定する。項目はそれぞれredmineのトップ、ticketページ、新しいticketを発行するページを指定してやる。
#ticketとコミットが即座に連携されるようにする。
ここまでの状態で連携設定は完了。しかし、このままコミットしても、一旦Redmineのリポジトリタブにアクセスしないとticketとの紐付けがされない。そのためコミット直後にその反映を行う必要がある。
Gitlabサーバでcustom git hookに追記する。
cd /var/opt/gitlab/git-data/repositories/sample.git
vi custom_hooks/post-receive
以下の行を末尾へ追加。({api_key}は、Redmineの管理 > 設定 > リポジトリ のAPIキー)
wget -q -O /dev/null https://myredmine.com/sys/fetch_changesets?key={api_key}&id={project_id}
以上で連携設定は完了。