概要
前回記事で構築したRedmine+GitLabの環境での、RedmineとGitLabの連携についての内容です。
(https-portal有無は問わず)
使用Dockerイメージ
REPOSITORY | TAG |
---|---|
sameersbn/redmine | 3.4.4-2 |
sameersbn/gitlab | 10.4.2 |
連携用bridgeネットワークについて
前回記事で構築した環境では、両コンテナをlocal-link
というネットワークに参加させている。
docker network create local-link
:
networks:
- local-link
:
networks:
local-link:
external: true
これにより、Redmine <-> GitLab間でコンテナ名でのアクセスが可能となる。
※ 同一のdocker-compose.ymlファイルへ記載した場合は、元々同じネットワーク(デフォルトネットワーク)へ参加している為ネットワーク作成は不要。
事前準備
- Redmineでtestプロジェクトを作成しておく
- GitLabでtestプロジェクトを作成し、初回コミットを済ませておく
設定手順
Redmine GitHub Hook プラグインのインストール
# redmineのコンテナ上で作業する
host$ docker exec -it redmine bash
# redmineユーザへ切り替える
root# su redmine
# ホストVolumeのpluginsディレクトリへ移動
redmine$ cd /home/redmine/data/plugins
# redmine_github_hookの配置
redmine$ git clone https://github.com/koppen/redmine_github_hook.git
プラグインインストール後、Redmineを再起動する。
GitLabでredmineユーザ作成
GitLabの管理画面から連携用のユーザredmine
(何でもOK)を作成する。
鍵登録
sameersbn/docker-redmineのイメージには予め鍵ペアが用意されている1ので、公開鍵/home/redmine/data/dotfiles/.ssh/id_rsa.pub
の内容を、GitLabのredmineユーザ設定User Settings
->SSH Keys
へ登録する。
host$ cat /srv/docker/redmine/redmine/dotfiles/.ssh/id_rsa.pub
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Redmineコンテナ上へのbareリポジトリ準備
Redmineコンテナから見える場所へbareリポジトリを用意する。
# remineコンテナへ入る
host$ docker exec -it redmine bash
# redmineユーザへ切り替える
root# su redmine
# リポジトリ配置用ディレクトリを作成する
redmine$ mkdir /home/redmine/data/git
# 事前準備で用意したtestリポジトリをcloneする
redmine$ cd /home/redmine/data/git
redmine$ git clone --bare git@gitlab:test/test.git
Redmineのリポジトリ設定
事前準備で用意したRedmineのtestプロジェクトへリポジトリを設定する。
GitLabでフック設定
- GitLabの
プロジェクト
->Settings
->Integrations
->Project services
->Redmine
画面で下記情報を入力する。
項目 | 入力内容 |
---|---|
Active | チェック |
Trigger | Pushへチェック |
Project url | http://redmine/projects/:test |
Issues url | http://redmine/issues/:id |
New Issues url | http://redmine/projects/:test/issues/new |
- GitLabの
プロジェクト
->Settings
->Integrations
->URL
へ**http://redmine/github_hook?project_id=test
**と入力しAdd webhook
ボタンを押下する。
以上で、連携設定完了。
-
念の為、Redmineコンテナの/sbin/entrypoint.shトリガで、鍵ペアがなければ生成する処理となっている事は確認。初回ホストVolume生成時に生成されているので、そのまま使用しても問題なし。 ↩