タイトルの通り、GitLabとRedmineが別のサーバで構築されている場合に、リポジトリを連携させるための設定Part2です。
以下のエントリで説明している内容が済んでいる前提で進めますので、済んでない方はまずは以下のエントリの内容を実施してください。
GitLabのリポジトリとRedmineを連携する
↑のエントリで1~3が完了しているので、以下の4以降を実施していきます。項目の[]は設定を行うサーバを指します。
- [Redmine]連携用プラグインインストール
- [Redmine]連携用ユーザ作成・リポジトリクローン先ディレクトリ作成
- [GitLab/Redmine]SSH鍵認証ログイン設定(git push用)
- [Redmine]リポジトリのクローン
- [Redmine(WebUI)]リポジトリ設定
- [Gitlab]フックスクリプト作成
- [Gitlab(WebUI)]Webhook作成
- [Redmine(WebUI)]リポジトリが連携されているか確認
環境はCentOS7.4、Selinuxは止めちゃってます。firewalldは必要に応じて開けましょう。
[Redmine]リポジトリのクローン
Redmineサーバで実施します。
GitLabのリポジトリをRedmineサーバのローカルにクローンします。作成した連携用のユーザで実行します。
1 2 3 |
# su - redgit $ cd /var/gitlab/repos $ git clone --bare http://192.168.2.10/Gabriel/Enache.git |
※GitLabのリポジトリURLは、WebUIで確認ができます
※ローカルディレクトリは重複する場合は指定しましょう(指定する場合は以下)
1 |
$ git clone --bare http://192.168.2.10/Gabriel/Enache.git Enache-01.git |
※ぴぐろぐの環境ではhttpでしか接続できなかったため、httpでクローンしています。SSHの場合は以下ですが、その場合はGitlabのWebUIからSSHキーを登録する必要があります。(通常のSSH鍵認証で接続できればOKと思われる)
1 |
$ git clone --bare git@192.168.2.10:Gabriel/Enache.git |
[Redmine]リポジトリ設定
RedmineのWebUIから実施ます。
対象プロジェクト > 設定 > リポジトリ > 新しいリポジトリ にて、以下のように設定します。
バージョン管理システム | Git |
メイン | 他に無い場合はチェック |
識別子 | 任意(リポジトリ名と合わせるのがわかりやすい) |
パス | クローンしたリポジトリのディレクトリ(↑の例だと、/var/gitlab/repos/Enache.git) |
エンコーディング | 任意(デフォルトでよい) |
ファイルとディレクトリの最新コミットを表示 | チェック |
[Gitlab]フックスクリプト作成
GitLabサーバでpushを受けたら、Redmineのローカルにクローンしたリポジトリにpushするスクリプトを用意します。
1 2 3 4 5 6 7 8 9 10 11 12 |
# cd /var/opt/gitlab/git-data/repositories/Gabriel/Enache.git # mkdir custom_hooks # スクリプトを作成(192.168.2.90 は Redmineサーバ) # vi custom_hooks/post-receive --- git push ssh://red-git@192.168.2.90/var/gitlab/repos/Enache.git refs/heads/*:refs/heads/* --- # gitユーザがpushするため、所有者を変更して、実行権を付与 # chown -R git.git custom_hooks # chmod +x custom_hooks/post-receive |
[Gitlab]Webhook作成
GitLabのWebUIから設定します。
GitLabリポジトリにpushしたタイミングで、Redmineリポジトリがリアルタイムで更新されるようします。(これをしないとRedmineのWebUIでリポジトリのページにアクセスしないとredmineのチケット側で反映されない)
ログイン > 上部メニューのシステムフック から、以下のように設定します。
URL | http://192.168.2.90/github_hook?project_id={プロジェクトID} |
プッシュもタグプッシュも(必要に応じて)チェックをいれておけばよいです。SSL検証も必要ならチェックすればよいですが、まぁいらないでしょう。
プロジェクトIDは、Redmineへリポジトリ設定をした際の識別子 を指定します。
例)http://192.168.2.90/github_hook?project_id=Enache
[Redmine WebUI]リポジトリが表示されるか確認
RedmineのWebUIから確認します。
対象プロジェクト > リポジトリ から確認して、リポジトリが表示されていることを確認します。正常に表示されていたら、GitLabにプッシュしてみましょう。プッシュした内容がredmineに連携されていれば成功です。
まとめ
Git の概念にもとづいて考えるとRedmineでローカルのリポジトリしか連携できないのはわかる。けど、連携自体はどう考えても必要だし、このやりかただと、連携したいリポジトリごとにこの手順を実施する必要があって面倒。。。Redmineのアップデートでリモートのリポジトリを連携(参照)できるように改善してほしい。。。と思いましたとさ。
↓↓↓ 持っていると便利な一冊。
北山晋吾 インプレス 2018年01月30日 売り上げランキング : 12061
|