Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

以上で連携設定は完了。

sakatukitukasa
最近はSREっぽいなにかをやってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした