GitLab Redmine

Redmineとgitlabの連携手順

2024年1月22日



目的

ホスト上に構築したredmineとGitlabサーバのリポジトリ連携を行う
gitlabリポジトリを更新したタイミングで、redmineリポジトリの更新を行う流れは以下のとおり

  1. クライアントからgitlabのリポジトリへpushして更新する
  2. gitlabのwebhookからredmineにHTTPリクエストを送る
  3. remineのhookプラグインによりgitlabリポジトリへFETCHを行う
  4. redmineのリポジトリが更新される

環境

  • redmineホスト(Ubuntu22.04) :redmineルートディレクトリ:/var/lib/redmine
  • ※ apache2と連携しない場合は、/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

参考

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)

CATEGORIES & TAGS

GitLab, Redmine,

Author:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

カテゴリー

むるし

フリーランスのインフラ系エンジニア。
備忘録で色々書いていきます。
お問い合わせは↓
mo-gyu@murci.net
LPIC303 Security
%d人のブロガーが「いいね」をつけました。