以前やったことあったのですぐに出来るかと思ったら、何故かはまってしまったのでメモ。
Redmine, GitLab どちらも Docker Hub にある公式イメージを使って動かしています。
環境
- GitLab CE : 13.11.1
- Redmine : 4.0.8
Redmine は使用しているプラグインの都合上、最新バージョンではありません。
前提
Redmine と GitLab の同期に必要になるプラグイン redmine_github_hook
はインストールされている前提です。
やりたいこと
GitLab にプッシュしたら Redmine のリポジトリも最新に更新したい(フェッチさせたい)。
fetch して同期させるだけなので、SSH とかは何も設定しません。
設定
GitLab の設定
プロジェクトの設定で、WebHook の設定を行います。
Settings > Webhooks を選択し、URL を設定します。
例えば以下のようにです。
http://example.com/github_hook?project_id=test&repository_id=test
Redmine 配下にベアリポジトリの作成
Redmine に Git のリポジトリを登録するには、ローカルにベアリポジトリを作成する必要があります。
そして、結果的にここが一番はまったのですが、Redmine の公式イメージでは、redmine
というユーザーで Redmine が実行されるようなので、redmine
のユーザーが書き込みできる箇所にリポジトリを作成するか、適切にパーミッションを設定してやる必要があります。
私はパーミッションの設定が面倒だったので、とりあえず redmine
ユーザーのホームディレクトリにベアリポジトリを作成することにしました。
まずはコンテナに入ります。
ユーザーとして redmine
を指定しています。
指定しなかったら root
で入ってしまうので注意です。
$ docker exec -it --user redmine <コンテナ名> bash
ここからはコンテナ内での作業です。
入った直後のパスは /usr/src/redmine
になっていたので、ホームディレクトリに移動してからクローンします。
ベアリポジトリを作成したいので、--bare
を指定します(--mirror
でも可)。
$ cd # ホームディレクトリに移動
$ pwd # 確認
/home/redmine
$ git clone --bare <リポジトリのURL>
あとは、Redmine のプロジェクトの設定画面でリポジトリを登録します。