RedmineとGitlabを連携する方法
2018年03月20日
- ITインフラ
- QNAP機能紹介
前回は、Gitlabのインストール方法 > を紹介しました。
今回は『RedmineとGitlabを連携する設定手順』を説明します。
今回は『RedmineとGitlabを連携する設定手順』を説明します。
RedmineとGitlabを連携するメリット
Redmine、Gitlabを単体で使用しても便利なのですが、その2つのツールを連携すると、さらに以下のようなことができるようになります。
- Redmineの画面上からGitのリポジトリーが見える
Redmine上で、最新リビジョンまでデータの差分を見ることができます。 - Gitのリポジトリーへファイルをコミットする時にRedmineチケットの紐付けができる
Redmineチケットにどのコミットが関連しているのかが確認できます。
いつ、誰が、何をしたのか…も分かり易く表示されます。
概要
記事では以下の手順を紹介します。
RedmineとGitlabのインストールはSSH接続での操作を前提としています。
また、Redmine・Gitlabでのプロジェクト・チケットの作成、Gitのpush等一般的な操作の説明は省略します。
RedmineとGitlabのインストールはSSH接続での操作を前提としています。
また、Redmine・Gitlabでのプロジェクト・チケットの作成、Gitのpush等一般的な操作の説明は省略します。
動作確認環境
製品 | TS453Pro |
---|---|
バージョン | QTS 4.2.1 Build 20160601 |
事前準備
RedmineとGitlabを連携するためには、Redmine側からGitlab側のリポジトリーを参照する必要があります。
RedmineコンテナーからGitlabコンテナーを直接参照することはできません。
QNAPのNASストレージ上にリポジトリーデータ用の共有フォルダーを作成し、両コンテナーのインストール時にマウント元として指定します。
今回のインストールする環境のイメージは以下のような形になります。
RedmineコンテナーからGitlabコンテナーを直接参照することはできません。
QNAPのNASストレージ上にリポジトリーデータ用の共有フォルダーを作成し、両コンテナーのインストール時にマウント元として指定します。
今回のインストールする環境のイメージは以下のような形になります。
※補足※
下記のDocker hubの説明ではデータのマウント元には/srv/docker/gitlab/や/srv/docker/redmine/を指定していますが、QNAPで同様の設定を行うとNASストレージの特性上、再起動時に全てのデータが消えてしまいますので注意してください。
これからご説明する手順で作成した共有フォルダーであれば、再起動時もデータが残ります。
Docker hub (sameersbn/redmine)
Docker hub (sameersbn/gitlab)
下記のDocker hubの説明ではデータのマウント元には/srv/docker/gitlab/や/srv/docker/redmine/を指定していますが、QNAPで同様の設定を行うとNASストレージの特性上、再起動時に全てのデータが消えてしまいますので注意してください。
これからご説明する手順で作成した共有フォルダーであれば、再起動時もデータが残ります。
Docker hub (sameersbn/redmine)
Docker hub (sameersbn/gitlab)
手順
- ホーム画面から「File Station」アイコンをクリック
- ボリュームの右側に表示されるPlusアイコンをクリック
- 共有フォルダー名を入力、[作成]ボタンをクリック
作成した領域は "/share/フォルダー名" でアクセス可能です。
RedmineとGitlabのインストール時はデータ領域をこのフォルダーからマウントします。
Redmineのインストール
Redmine、MySQLのコンテナーをコマンドラインからインストールします。
この操作はSSH接続で行います。
各入力値の説明は以下のとおりです。
引数 | 説明 |
---|---|
MySQL Name | MySQLコンテナーの名前 |
Redmine Name | Redmineコンテナーの名前 |
Redmine DB Root Pwd | Redmine用DBのrootユーザーのパスワード |
Redmine DB Name | Redmine用DBの名前 |
Redmine HTTP Port No | Redmineをブラウザーで使用するときのポート番号 |
Shared Folder Path | 事前準備で作成したQNAPのNASストレージ上のフォルダーの絶対パス |
手順
- リモートPCのターミナルから、adminアカウントでログイン
リモートPCからSSH接続する手順 をご覧ください。 - RedmineとGitlabで使用するMySQLをインストール
インストール時にはRedmineのデータベースを作成します。
以下のコマンドを入力します。<>の入力値の説明は上の表を参照してください。$ docker run -d --name <MySQL Name>
-e MYSQL_ROOT_PASSWORD=<Redmine DB Root Pwd>
-e MYSQL_DATABASE=<Redmine DB Name>
mysql:latest --character-set-server=utf8 --collation-server=utf8_general_ci
--skip-character-set-client-handshake - Redmine本体 インストール
以下のコマンドを入力します。$ docker run -d -p <Redmine HTTP Port No>:80 --name <Redmine Name>
-e DB_NAME=<Redmine DB Name> -e DB_PASS=<RedmineDB Root Pwd>
--link <MySQL Name>:mysql -v <Shared Folder Path>:/home/git/data
sameersbn/redmine:latest
Gitlabのインストール
Gitlab、Redisのコンテナーをコマンドラインからインストールします。 Redmineのインストール時に作成したMySQLコンテナーにGitlab用のデータベース、ユーザーを追加します。 この操作はSSH接続で行います。
各入力値の説明は以下のとおりです。
各入力値の説明は以下のとおりです。
引数 | 説明 |
---|---|
Redis Name | Redisコンテナーの名前 |
MySQL Name | MySQLコンテナーの名前(Redmineインストール時に決めたもの) |
Redmine Name | Redmineコンテナーの名前(Redmineインストール時に決めたもの) |
Gitlab Name | Gitlabコンテナーの名前 |
Gitlab DB User | Gitlab用DBのユーザー名 |
Gitlab DB Pwd | Gitlab用DBのパスワード |
Gitlab DB Name | Gitlab用DBの名前 |
Gitlab HTTP Port No | Gitlabをブラウザで使用するときのポート番号 (Redmineや他のWebアプリと重複しないように番号を選択する) |
Gitlab SSH Port No | GitlabをSSH接続で使用するときのポート番号 |
Shared Folder Path | 事前準備で作成したQNAPのNASストレージ上のフォルダーの絶対パス |
手順
- リモートPCのターミナルから、adminアカウントでログイン
リモートPCからSSH接続する手順 をご覧ください。 - Gitlabで使用するRedisをインストール
以下のコマンドを入力します。<>の入力値の説明は表を参照してください。$ docker run --name <Redis Name> -d sameersbn/redis:latest - MySQLへログイン
以下のコマンドを入力します。$ docker exec -it <MySQL Name> bash
$ mysql -uroot -psecret - MySQLのデータベースへスキーマを追加
以下のコマンドを入力します。mysql> CREATE USER '<Gitlab DB User>'@'%.%.%.%' IDENTIFIED BY '<Gitlab DB Pwd>';
mysql> CREATE DATABASE IF NOT EXISTS `<Gitlab DB Name>`
-> DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT ALL PRIVILEGES ON `<Gitlab DB Name>`.*
-> TO '<Gitlab DB User>'@'%.%.%.%';
mysql> quit - 以下のコマンドでGitlab本体をインストールします
$ docker run --name <Gitlab Name> -d
-p <Gitlab HTTP Port No>:80 -p <Gitlab SSH Port No>:22
-e GITLAB_PORT=<Gitlab HTTP Port No> -e GITLAB_SSH_PORT=<Gitlab SSH Port No>
-e DB_ADAPTER=mysql2 -e DB_HOST=mysql -e DB_NAME=<Gitlab DB Name>
-e DB_USER=<Gitlab DB User> -e DB_PASS=<Gitlab DB Pwd>
-e GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string
--link <MySQL Name>:mysql --link <Redis Name>:redisio
--link <Redmine Name>:redmine -v <Shared Folder Path>:/home/git/data
sameersbn/gitlab:latest
Redmine-Gitlabの設定
インストールしたRedmineとGitlabそれぞれに連携するプロジェクトを作成し、設定を追加します。
プロジェクトの新規作成
ブラウザーからRedmineとGitlabにプロジェクトを作成します。作成の詳細な手順は省略します。
- ブラウザーからGitlabを開く
- rootのアカウントでログイン
- 連携用に新しいプロジェクトを作成
- ブラウザーからRedmineを開く
- adminのアカウントでログイン
- 連携用に新しいプロジェクトを作成
Redmineの設定
ブラウザーからRedmineの連携の設定を行います。また、Gitlabの設定に必要な情報を確認します。
- ブラウザーからRedmineを開く
- ページ右側:管理 > 設定 メニューを選択
- 「リポジトリ」タブ表示
- 以下のとおり設定
項目名 入力値 コミットを自動取得する チェックOn リポジトリ管理用のWebサービスを有効にする チェックOn APIキー APIキー値(または「キーの生成」から自動生成)
※APIキーはこの後Gitlab側へ設定するためメモしておく - ブラウザーに以下のURLを入力
http://QNAP IPアドレス:Redmine HTTPポート番号/projects/プロジェクト識別子.xml
- 表示されるXMLからプロジェクトID(idタグ)の数字を確認
プロジェクトIDはこの後Gitlab側へ設定するため覚えておきます。 - Redmineの画面上から連携するプロジェクトを開く
- 「設定」タブ クリック
- 「リポジトリ」タブ クリック
- 「新しいリポジトリ」 リンククリック
-
以下のとおりリポジトリを作成
項目名 入力値 バージョン管理システム Git リポジトリのパス /home/git/data/repositories/GitlabのProjectの名前空間/GitlabのProject名 ファイルとディレクトリの最新コミットを表示する チェックOn - 設定後の画面から識別子名をクリック
- Gitlabのプロジェクトへ既にファイルをコミット済みの場合、ファイルとコミット履歴が表示されることを確認
まだファイルをコミットしていない場合は404エラーが表示されます。
Gitlabの設定
ブラウザーからGitlabの連携の設定を行います。
- ブラウザーからGitlabを開く
- 連携するプロジェクトを開く
- Settings > Web hooks 選択
- URLを入力
http://redmine/sys/fetch_changesets?key=APIキー&id=プロジェクトID
- [Add Webhooks] ボタン押下
- 追加されたWebhookの[Test Hook]ボタン押下
成功すれば設定完了です。
Redmine-Gitlab連携確認
Gitlabのリポジトリーへファイルのpushを行い、Redmineに反映されるか確認を行います。
- Redmineのプロジェクト上で新規チケットを作成
- Gitlabのプロジェクトのリポジトリーへファイルのpush
コミット時にコメントの先頭に"refs #Redmineチケット番号"と記入します。
※今回は簡易的に動作確認を行うために、ブラウザーからRedmineチケット#2に紐付けてREADMEファイルをpushしました。
- Redmineチケット#2を開く
関連しているリビジョンにコミット履歴が表示されました。
ファイルと履歴はプロジェクトのリポジトリーからも確認することができます。
次回は、Redmineにメールを設定する方法 > をご紹介します。