目的
ホスト上に構築したredmineとGitlabサーバのリポジトリ連携を行う
gitlabリポジトリを更新したタイミングで、redmineリポジトリの更新を行う流れは以下のとおり
- クライアントからgitlabのリポジトリへpushして更新する
- gitlabのwebhookからredmineにHTTPリクエストを送る
- remineのhookプラグインによりgitlabリポジトリへFETCHを行う
- redmineのリポジトリが更新される
環境
- redmineホスト(Ubuntu22.04) :redmineルートディレクトリ:/var/lib/redmine
- gitlab : 13.10.2-ee
- Redmine version : 5.0.6
- Ruby version : 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
- Rails version : 6.1.7.6
- プラグイン「Redmine Github Hook」 : 3.0.1
※ apache2と連携しない場合は、/var/lib/redmineにインストールする
参考
– https://blog.devplatform.techmatrix.jp/blog/try-gitlab-redmine/
事前準備
– redmineの構築は、Lychee-Redmineの構築手順 を参照
redmineサービスをsystemctlに登録する
$ /var/lib/redmine/bin/bundle exec rails server -e production -u puma
$ sudo vi /etc/systemd/system/redmine.service
----------
[Unit]
Description=Rails Application
After=network.target
[Service]
Type=simple
User=admin
WorkingDirectory=/var/lib/redmine
ExecStart=/var/lib/redmine/bin/bundle exec rails server -e production -u puma
Restart=always
[Install]
WantedBy=multi-user.target
サービスの読み込み
$ systemctl daemon-reload
自動起動を有効化
$ systemctl enable redmine.service
$ systemctl list-unit-files | grep redmine
redmine.service enabled enabled
Redmine Github Hookプラグインをインストール
plugins配下にcloneする
$ pwd
/var/lib/redmine/plugins/
$ git clone http://github.com/koppen/redmine_github_hook.git
redmineサーバを再起動する
$ systemctl restart redmine
Redmine Github Hookプラグインの登録確認(GUI)
– ブラウザでredmineにログインする(“http://redmine.local:3000”)
– 上部メニューの「管理」>「プラグイン」を選択する。一覧に「Redmine Github Hook」が存在すること
![1_plugin.png](/attachment/65a78afc6b92b4006ace7f78)
redmineにリポジトリを登録する
gitlabからリポジトリをクローンする
$ pwd
/var/lib/redmine/lib/repo
$ git clone --bare http://redmine:admin@gitlab.local:2080/redmine/[project-name].git
$ git remote -v
origin http://redmine:admin@gitlab.local:2080/redmine/[project-name].git (fetch)
origin http://redmine:admin@gitlab.local:2080/redmine/[project-name].git (push)
– originのURLにgitlabのユーザ名とパスワードが設定されていない場合は、以下コマンドにて設定する
$ git remote set-url origin http://redmine:admin@gitlab.local:2080/redmine/[project-name].git
redmineのリポジトリに登録する
– redmineの上部メニュー「プロジェクト」>「プロジェクト名」>タブ「リポジトリ」にて、「新しいリポジトリ」から以下を登録する
- バージョン管理システム:Git
- 識別子:プロジェクト名
- リポジトリのパス:redmineルート配下「/var/lib/redmine/lib/repo/[project-name].git」
- 識別子をクリックすると、更新履歴が表示されること
- 識別子をクリックすると、更新履歴が表示されること
![2_repository.png](/attachment/65a877306b92b4006ace7f92)
![3_repo-update.png](/attachment/65a879bc6b92b4006ace7f93)
GitlabにてWebhookの登録
– プロジェクトの「Settings」>「Webhooks」から以下を登録する
- URL:http://redmine.local:3000/github_hook?project_id=[project-name]
- Trigger:「Push events」にチェックを入れる
- Save changes
連携テスト
– gitlabのhookが機能して、redmineのリポジトリが更新されるか確認する
テストパターン
– テストパターンは以下の2つ
- gitlabからwebhookのテスト実施
- gitlabリポジトリを更新する
gitlabからwebhookのテスト実施
– Webhooksの画面にて、「Test」>「Push events」を実行する
- ステータスが正常であること
- HTTPレスポンスが200OKであること
- Response bodyにて、「GithubHook: Redmine repository updated」と出力されること
- redmineのproduction.logに「GithubHook: Redmine repository updated」と出力されること
gitlabリポジトリを更新する
– 作業端末から、gitlabのリポジトリにpushして更新する
$ echo "gitab connect test" >> test23.txt
$ git add .
$ git commit -m "70% #23 @2h15m"
※ 70%は進捗率、#23はチケット番号、@2h15mは所要時間
$ git push
- redmineのproduction.logに「GithubHook: Redmine repository updated」と出力されること
- redmineのGUIにて、リポジトリが更新されていること
![4_repo-update.png](/attachment/65a87a046b92b4006ace7f94)