RedmineとGitLab@Dockerの連携設定


## 概要
[前回記事](https://qiita.com/iwa-na/items/d9fedf8b4a2fb156d446)で構築したRedmine+GitLabの環境での、RedmineとGitLabの連携についての内容です。
(https-portal有無は問わず)

## 使用Dockerイメージ
| REPOSITORY              | TAG                 |
| ----------------------- | ------------------- |
| sameersbn/redmine       | 3.4.4-2             |
| sameersbn/gitlab        | 10.4.2              |

## 連携用bridgeネットワークについて
[前回記事](https://qiita.com/iwa-na/items/d9fedf8b4a2fb156d446)で構築した環境では、両コンテナを`local-link`というネットワークに参加させている。

```sh:start-up.sh
docker network create local-link
```
```yaml:gitlab/docker-compose.yml,redmine/docker-compose.yml
　　：
        networks:
            - local-link
　　：
networks:
    local-link:
        external: true
```

これにより、Redmine <-> GitLab間でコンテナ名でのアクセスが可能となる。
※ 同一のdocker-compose.ymlファイルへ記載した場合は、元々同じネットワーク(デフォルトネットワーク)へ参加している為ネットワーク作成は不要。

## 事前準備
* Redmineで**test**プロジェクトを作成しておく
* GitLabで**test**プロジェクトを作成し、初回コミットを済ませておく

## 設定手順

### Redmine GitHub Hook プラグインのインストール
```sh
# 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](https://github.com/sameersbn/docker-redmine)のイメージには予め鍵ペアが用意されている[^1]ので、公開鍵`/home/redmine/data/dotfiles/.ssh/id_rsa.pub`の内容を、GitLabのredmineユーザ設定`User Settings`->`SSH Keys`へ登録する。

```sh:id_rsa.pubの内容表示
host$ cat /srv/docker/redmine/redmine/dotfiles/.ssh/id_rsa.pub 
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
`User Settings`->`SSH Keys` 画面
![Screenshot from 2018-02-09 00-28-08.png](https://qiita-image-store.s3.amazonaws.com/0/223169/9f77a3bf-57ad-65e4-3b18-001e6bce9495.png)

### Redmineコンテナ上へのbareリポジトリ準備
Redmineコンテナから見える場所へbareリポジトリを用意する。

```sh
# 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プロジェクトへリポジトリを設定する。

![Screenshot from 2018-02-09 00-41-35.png](https://qiita-image-store.s3.amazonaws.com/0/223169/f9376467-95eb-afb6-623d-9a996839288a.png)



### 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          |

![Screenshot from 2018-02-09 01-10-49.png](https://qiita-image-store.s3.amazonaws.com/0/223169/561e6837-8c56-9ee2-e1e1-9dd97da8bb98.png)

* GitLabの `プロジェクト` -> `Settings` -> `Integrations` -> `URL`へ**`http://redmine/github_hook?project_id=test`**と入力し`Add webhook`ボタンを押下する。

以上で、連携設定完了。

---

[^1]: 念の為、Redmineコンテナの/sbin/entrypoint.shトリガで、**鍵ペアがなければ生成する**処理となっている事は確認。初回ホストVolume生成時に生成されているので、そのまま使用しても問題なし。