別サーバで社内に立ててるGitLabとRedmineを連携したくなった。

ちなみに片一方はAWSでもう一方はAzure。

GitLabへのPush通知をRedmine側に出して、RedmineからGitLabのリポジトリをpullして

Redmine側のリポジトリに反映させるみたいなやつ。

やるときの流れ。

  1. Redmineに「redmine_github_hook」のプラグインをインストール
  2. Redmineのサーバで適当な場所に該当リポジトリをbareでClone
  3. Redmineでパスワード無しでfetch出来るようにする
  4. Redmineのリポジトリに上でCloneしたフルパスを設定する
  5. GitLabのWebhookを設定する

redmine_github_hookのインストール

https://github.com/koppen/redmine_github_hook

redimne/htdocs/Gemfileの一番最後に↓を記載してbundle

gem "redmine_github_hook"

あと再起動。

リポジトリをbareでClone

こんな感じ

git clone --bare https://gitlab.hoge.com/fuga/myrepo.git myrepo.git

ベアリポジトリのディレクトリ名は「***.git」にした方がいいらしい。

パスワード無しでfetch出来るようにする

sshが通る場合はそれで。

通らない場合はhttpsでcloneすると思いますが、

パスワードキャッシュだとうまくいかなかった。

configにID/PASS書かないとだめっぽ。微妙ーーーー。

myrepo.git/config

[remote "origin"]
	url = https://[userid]:[password]@gitlab.hoge.com/fuga/myrepo.git

Redmineのリポジトリの設定

これは普通に。。。

GitLabのWebhookを設定する

GitLab側は該当リポジトリの「設定⇒インテグレーション」の

WebHookで下の感じのURLを設定してPushにチェックつけて追加。

https://hoge.com/redmine/github_hook?project_id=[プロジェクトの識別子]&repository_id=[リポジトリの識別子]

こんな感じ
https://hoge.com/redmine/github_hook?project_id=myproject&repository_id=myrepo

とりあえずこれで通った。

上手くいかない場合の調べ方。

まずはとりあえず、サーバ間の疎通が取れてるか確認。pingでも何でもいい。

そしたらGitLabに設定したWebHookの編集のリンク。

TestクリックしてPushを選択。

そうすると通知履歴が出来るので、それの編集をクリック。

そしたらResponseが見れるので、一番下にエラーの内容が返ってきてるはず。

Redmine側のログは「log\production.log」あたり。

apacheならPostリクエストのログがapacheのログにも出てるはず。

そのあたり見て、問題の切り分けをするしかなかね。

とりあえず、bareリポジトリじゃないとfetch後のマージとか失敗してるみたいですよ。