GitLabとRedmineが別のサーバとして構成されているときにリポジトリを連携する手順を紹介します。
SVN(Subversion)とRedmineを連携するときは、Redmineの設定でSubversionのリポジトリURLを指定するだけで連携することができましたが、GitLabではローカルのパスしか指定ができません。そのため、サーバ側でいくつか設定する必要がありますが、Git自体をほぼ使ったことがなかったこともあり、、、少しはまったのでメモしておきます。
GitLabのリポジトリとRedmineを連携する
冒頭にも記載の通り、RedmineにGitのリポジトリを指定する場合はローカルのパスしか指定できません。
そのため、RedmineサーバのローカルにGitLabのリポジトリをクローンし、クローンしたローカルのリポジトリとRedmineを連携することになります。その場合、GitLabにプッシュされたらRedmineにも反映する必要があり、GitLabのフックスクリプトを使用して反映します。簡単にいうと、GitLabにプッシュされたら、そのプッシュをトリガーにしてGitLab→Redmineにプッシュしてリポジトリを更新します。
それでは、以下の手順で進めていきます。
※以下タイトル冒頭の[]は、実行するサーバを示す(Redmineサーバで行うのか、GitLabサーバで行うのか)
※項番1~3は1回のみ実施すればOK
※項番4~9は連携するリポジトリごとに実施する必要あり
- [Redmine] 連携用プラグインインストール
- [Redmine] 連携用ユーザ作成・リポジトリクローン先ディレクトリ作成
- [GitLab/Redmine] SSH鍵認証ログイン設定(git push用)
- [Redmine] リポジトリのクローン
- [Redmine(WebUI)] リポジトリ設定
- [Gitlab] フックスクリプト作成
- [Gitlab(WebUI)] Webhook作成
- [Redmine(WebUI)]リポジトリが連携されているか確認
[Redmine]連携用プラグインインストール
この作業はRedmineサーバで実行します。
まず、redmineのプラグインディレクトリに移動して、ダウンロードします。その後、Redmineを再起動するために、restart.txt を作成してRedmineにWebブラウザでアクセスします。
1 2 3 |
# cd /var/lib/redmine/plugins # git clone git://github.com/koppen/redmine_github_hook.git # touch /var/lib/redmine/tmp/restart.txt |
Redmineを再起動することで、restart.txtは削除されるようですが、ぴぐろぐの環境では残っていました。残っていた場合はrmコマンドで削除すれば問題ないと思われます。再起動されていないのかと思い、RedmineのWeb画面で「管理」→「プラグイン」を確認すると、追加したプラグインが表示されていたので、ちゃんとインストールされているようです。
[Redmine]連携用ユーザ作成
この作業もredmineサーバで実行します。
GitLabとredmine の連携用のユーザを作成します。
1 |
# useradd -m red-git |
[Redmine]リポジトリクローン先ディレクトリ作成
この作業もredmineサーバで実行します。
冒頭に記載の通り、RedmineでGitのリポジトリと連携するためには、Redmineのローカルのパスを指定する必要があります。そのために、redmineサーバのローカルにGitのリポジトリをクローンする必要があり、クローンするためのディレクトリを作成しておきます。
1 2 |
# mkdir -p /var/gitlab/repos # chown -R red-git.red-git /var/gitlab |
[GitLab]SSH鍵認証ログイン設定
Gitlabにプッシュされた際に、Gitlab→RedmineにプッシュするためにGitlabサーバのgitユーザがRedmineサーバのredgitユーザにSSH接続できるようにしておく必要がある。SSH接続は、パスフレーズなし鍵認証で設定する。
まず、GitLab サーバで鍵を作成します。GitLabサーバのgitユーザがプッシュするので、gitユーザで鍵を作成します。
1 2 3 4 5 |
# su - git $ ssh-keygen -t rsa $ ls -l ~/.ssh/id_rsa* /var/opt/gitlab/.ssh/id_rsa /var/opt/gitlab/.ssh/id_rsa.pub |
続いて、GitLab→RedmineにSSH接続するための設定ファイルを作成します。
1 2 3 4 5 6 7 |
# cat > config << EOF Host redmine-sv # ssh接続時に指定する識別子 HostName 192.168.1.10 # ホスト名またはIPアドレス Port 10022 # ポート番号を変更している場合は指定(指定しなければ22が使用される) User red-git # 作成した連携用ユーザ IdentityFile ~/.ssh/id_rsa # 作成した鍵ファイル EOF |
[Redmine]SSH公開鍵の登録
GitLabサーバgitユーザの公開鍵をRedmineサーバのred-gitユーザに登録します。
1 |
# su - red-git |
Redmineサーバで red-git ユーザにスイッチしたうえで、GitLabサーバの/var/opt/gitlab/.ssh/id_rsa.pub を Redmineサーバの /home/red-git/.ssh/authorized_keys に追記します。scp や ssh-copy-id コマンドを使用できるのであれば、使ってコピーしてください。
1 |
$ chmod 600 /home/red-git/.ssh/authorized_keys |
SSH鍵認証をパスフレーズ無しで設定するやり方は以下のエントリで説明していますのでどうぞ。
[Redmine]sshd設定
Redmineサーバで公開鍵認証を有効に変更します。
1 2 3 4 5 6 7 8 9 |
# vi /etc/ssh/sshd_config # 以下のコメントを外す # PubkeyAuthentication yes ↓ PubkeyAuthentication yes # 再起動 # systemctl restart sshd |
[GitLab]SSH接続確認
GitLabサーバからRedmineサーバに接続できることを確認します。
1 2 |
# su - git $ ssh redmine-sv |
一旦まとめ
ここまでが、RedmineとGitLabを連携するための準備として必要な手順です。冒頭の項番としては、1~3までが完了しました。
このページでの作業は各サーバで一度実施すればOKで、この後、連携させたいリポジトリごとに行う設定は以下のエントリで説明していますので、どうぞ。
↓↓↓ 持っていると便利な一冊。
北山晋吾 インプレス 2018年01月30日 売り上げランキング : 12061
|