別サーバで社内に立ててるGitLabとRedmineを連携したくなった。
ちなみに片一方はAWSでもう一方はAzure。
GitLabへのPush通知をRedmine側に出して、RedmineからGitLabのリポジトリをpullして
Redmine側のリポジトリに反映させるみたいなやつ。
やるときの流れ。
- Redmineに「redmine_github_hook」のプラグインをインストール
- Redmineのサーバで適当な場所に該当リポジトリをbareでClone
- Redmineでパスワード無しでfetch出来るようにする
- Redmineのリポジトリに上でCloneしたフルパスを設定する
- 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後のマージとか失敗してるみたいですよ。