Docker環境に構築したGitlabとRedmineを連携設定しプロジェクト管理とバージョン管理の効率を改善します。当記事ではGitLab-Redmine連携設定のうち主にRedmineに関わる部分を説明しています。Gitlab側の設定と連携確認はその2を参照してください。
当記事は以下の過去記事と関連があります。
連携対象とするGitLabプロジェクトは「GitLabプロジェクトの初期設定」で作成したGitlabプロジェクトです。
GitlabとRedmineはDockerコンテナ上に存在し両コンテナは同一のネットワークに参加している(通信ができる)ことが前提になります。
目次
1.Redmine連携プロジェクト追加
詳細手順はそれほど難しくない為割愛しますがRedmineにGitLab連携用プロジェクトを以下の設定で作成します。
- Redmineに追加するプロジェクト
プロジェクト名:vbacom
一般ユーザ― :vba_memb
管理ユーザ― :admin
作成後のRedmineプロジェクト
2.GitlabにRedmine連携用アカウント作成
GitlabにRedmineコンテナからGitlabのリポジトリを参照する為の専用ユーザー「redmine」を作成しreporterのロールを割り当てます。
(1)アカウント作成
gitlabに管理者でログインし[管理エリア]→[新しいユーザ]からユーザ―「redmine」を
追加します。このアカウントは後述のRedmineコンテナからGitlabのベアリポジトリを作成する際に使用します。
Username:redmine
Passwd :gitredmine
ID :redmine
(2)プロジェクトメンバー追加
作成したユーザ―「redmine」に連携用プロジェクト「vbacom」のreporter権限を付与します。「vbacom」プロジェクトの[設定]→[メンバー]から以下のように入力します。
3.Redmineコンテナにベアリポジトリ追加
(1)ベアリポジトリマウント設定
Redmineコンテナのdocker-compose.ymlを修正しデータボリュームコンテナにgitベアリポジトリ用のホストマウント設定を追加します。
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
version: '2' services: sqldata: image: busybox volumes: - ./data/mysql:/var/lib/mysql redminedata: image: busybox volumes: - ./data/redmine/files:/usr/src/redmine/files + - ./data/redmine/plugins:/usr/src/redmine/plugins + - ./data/redmine/git_repositories:/var/redmine/git_repositories redmine: image: redmine:latest links: - "db" depends_on: - "db" restart: always environment: REDMINE_DB_MYSQL: db REDMINE_DB_PASSWORD: "rootpass" VIRTUAL_HOST: redmine.hoge3.com VIRTUAL_PORT: 3000 volumes_from: - redminedata db: image: mysql command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci restart: always environment: MYSQL_ROOT_PASSWORD: "rootpass" MYSQL_DATABASE: redmine TZ: "Asia/Tokyo" volumes: - /etc/localtime:/etc/localtime:ro volumes_from: - sqldata networks: default: external: name: common_link |
12行目にgitベアリポジトリ用のホストマウント設定を追加しています。
11行目に追加しているのは後述するプラグイン用のホストマウント設定です。
(2)マウントディレクトリ作成
Dockerホストマシン上で上記マウントフォルダを作成し、コンテナのredmineユーザーから読み書きできるように所有者をredmine(999:999)に変更しておきます。
1 2 3 4 |
# mkdir ./data/redmine/git_repositories # mkdir ./data/redmine/plugins # chown -R 999:999 ./data/redmine/git_repositories # chown -R 999:999 ./data/redmine/plugins |
(3)再起動
コンテナを再起動し上記修正を反映させます。
1 2 |
# docker-compose down # docker-compose up -d |
(4)ベアリポジトリ作成
Redmineコンテナに連携対象とするgitlabプロジェクトのベアリポジトリを作成します。
①Redmineコンテナに接続し上記ディレクトリに移動
1 2 |
# docker exec -it gitlredm_redmine_1 bash root@0e8b85cb3294:/usr/src/redmine# cd /var/redmine/git_repositories |
②ベアリポジトリ作成
1 |
root@0e8b85cb3294:/var/redmine/git_repositories# git clone --bare http://redmine:gitredmine@gitlab_gitlab_1/vba/vbacom.git |
ここではお手軽にhttp認証で連携対象のリポジトリをクローンしています。
(5)リモートURL設定確認
①リポジトリ参照用のurlが正しくセットされていることを「config」ファイルを参照し確認します。
1 2 3 4 5 6 7 8 |
root@0e8b85cb3294:/var/redmine/git_repositories# cd vbacom.git root@0e8b85cb3294:/var/redmine/git_repositories# cat config [core] repositoryformatversion = 0 filemode = true bare = true [remote "origin"] url = http://redmine:gitredmine@gitlab_gitlab_1/vba/vbacom.git |
②正しくセットされていない場合は以下の設定コマンドを実行します。
1 |
root@0e8b85cb3294:/var/redmine/git_repositories/vbacom.git #git config --local remote.origin.url http://redmine:gitredmine@gitlab_gitlab_1/vba/vbacom.git |
(6)ベアリポジトリのオーナー変更
作成したベアリポジトリの所有者はrootになっている為、redmineユーザーから読み書きできるように所有者をredmine(999:999)に変更します。
1 2 |
root@0e8b85cb3294:/var/redmine/git_repositories/vbacom.git # cd .. root@0e8b85cb3294:/var/redmine/git_repositories# chown -R redmine:redmine vbacom.git |
4.Redmineのリポジトリ・ユーザー設定
Redmineに管理者でログインし以下の設定をします。
(1)リポジトリ管理の設定
[管理]→[リポジトリ]から以下の設定を変更し保存します。
- コミットを自動取得する: on(デフォルト)
- 参照用キーワードに”*”を追加
- 異なるプロジェクトのチケットの参照/修正を許可:ON
- コミット時に作業時間を記録する :ON
(2)プロジェクトのリポジトリ設定
①対象プロジェクトに入り[設定]→[リポジトリ]→[新しいリポジトリ]を選択
②設定箇所と値
- バージョン管理システム:[git]
- 識別子 :[vbacom] (ターゲットプロジェク)
- リポジトリのパス:/var/redmine/git_repositories/vbacom.git(ベアリポジトリ)
- ファイルとディレクトリの最新コミットを表示する:ON
変更後「作成」ボタンをクリックします。
③確認
プロジェクトの[リポジトリ]から連携対象プロジェクト「vbacom」のリポジトリ情報が表示されれば設定は成功です。
(3)ユーザ連携設定
RedmineユーザーとGitlabユーザーの対応付けを設定します。該当プロジェクトの[設定] →[リポジトリ]から一覧に表示されているユーザリンクを選択します。
以下一覧が表示されるので適亘変更します。ログインIDがGitLabのユーザ―、ユーザーがRedmineのユーザ―に該当します。ユーザー名またはメールアドレスがGitlabのユーザ―情報と一致していれば自動的に関連付けされるようです。
自動的に関連付けられなかったユーザーがあれば手動で関連付けをし保存します。当プロジェクトではAdministratorのユーザ―設定を手動で変更ました。
5.Redmineプラグイン(redmine_github_hook)の導入
RedmineベアリポジトリにGitlabリポジトリの変更が反映されるよう上記プラグインを
導入します。
(1)plugin導入
①Redmineコンテナに接続しプラグインディレクトリに移動
1 2 |
# docker exec -it gitlredm_redmine_1 bash root@0e8b85cb3294:/usr/src/redmine# cd plugins |
②ダウンロード
1 |
root@0e8b85cb3294:/var/redmine/plugins# git clone git://github.com/koppen/redmine_github_hook.git |
(2)プラグインディレクトリのオーナー変更
1 |
root@0e8b85cb3294:/usr/src/redmine/plugins# chown -R redmine:redmine redmine_github_hook |
(3)再起動
コンテナ接続を切断後、コンテナを再起動し上記修正を反映させます。
1 2 3 |
root@0e8b85cb3294:/usr/src/redmine/plugins# exit # docker-compose down # docker-compose up -d |
(4)プラグイン確認
Redmineに管理者でログインし[管理]→[プラグイン]から上記プラグインの導入状況を確認します。
Redmine Github Hook pluginが確認できました。
6.リポジトリ日本語文字化け対応
(1)現象
上記連携設定後リポジトリのファイルを参照したところ、日本語が文字化けして正しく表示されませんでした。
(2)原因と対応
答えはRedmine公式のFAQにありました。デフォルトの設定ではUTF-8のエンコーディングをするらしくShift-JISエンコーディングの日本後は正しく表示されないようです。以下の設定を追加することで正しく表示されるようになります。
管理者でログインし「管理」→「設定」→「ファイル」タブを開き「添付ファイルとリポジトリのエンコーディング」に「utf-8,cp932,euc-jp」を追記
(3)確認
上記設定後、再度リポジトリのファイルを開いてみます。
Shift-JISエンコーディングの日本語が正しく表示されるようになりました。
続いてGitlab側の設定となります。GitLab-Redmineの連携設定その2を参照ください。
7.参考にさせて頂いたサイト
GitLabとRedmineを連携してみるの巻 (アルパカDiary Pro様)
(改訂版) Docker でオフィシャルな GitLab イメージと Redmine イメージのコンテナを連携させる
ありがとうございます。