LoginSignup
59
74

More than 5 years have passed since last update.

GitlabとRedmineを連携させる方法の覚書。

Last updated at Posted at 2015-11-13

追記(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}

以上で連携設定は完了。

59
74
5

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
59
74