プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2021/04/28

Redmine と GitLab の連携(ベアリポジトリの同期)

event_note2021/04/28 4:33

以前やったことあったのですぐに出来るかと思ったら、何故かはまってしまったのでメモ。

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 のプロジェクトの設定画面でリポジトリを登録します。

参考 URL