Table of Contents
gitlab と backlog の git リポジトリミラーリング
社内のネットワークやいろいろなアレがあって
社内の gitlab から直接 CI サーバーへ接続できないけど、
gitlab も CI も backlog へはアクセスできる時などに……。
- GitLab Community Edition 8.12.7
github へのミラーリング方法を記載されておられる下記ページを参考にしています。
- GitLab にカスタムフックを設定する
https://ez-net.jp/article/1B/eoyhWdZI/k7CLR_5idahI/
backlog 側での準備
管理画面から git リポジトリを作成しておく。
git の URL を控えておく。
gitlab 側での準備
ssh 鍵作成
backlog 側 git リポジトリへは鍵認証で接続するので、
gitlab サーバーの git ユーザーで
鍵を作成しておく。
ssh-keygen -t rsa -b 4096
→ 公開鍵の内容は backlog で登録しておくこと
2017/07/24 追記
backlog での公開鍵の追加はユーザー単位でしかできないので、 git ユーザーの公開鍵は backlog ユーザーの誰かで登録することになります。 つまり git ユーザーの公開鍵を登録したユーザーが backlog のプロジェクトに参加している必要があります。。。
git インストール
gitlab サーバーで git ユーザが
git push するので git のインストールをおこなっておく。
su - git
sudo yum install git
git remote に backlog を追加する
最近の gitlab はリポジトリの置き場所が
/mnt/data/git-data/repositories/所有者名/リポジトリ名.git
へ変わっているので
下記場所で作業します。
cd /mnt/data/git-data/repositories/所有者名/リポジトリ名.git
backlog の git リポジトリを remote add しておきます。
git remote add backlog 名前@名前.git.backlog.jp:/所有者名/リポジトリ名.git
現状の gitlab リポジトリの内容を backlog 側へ同期しておく
`–all` をつけて全ブランチを push
cd /mnt/data/git-data/repositories/所有者名/リポジトリ名.git
git push backlog --all
カスタムフックの準備
git 標準の hooks は gitlab が使っているので
gitlab で hook したい場合は custom_hooks ディレクトリを用意しろとのこと。
cd /mnt/data/git-data/repositories/所有者名/リポジトリ名.git
mkdir custom_hooks
カスタムフックスクリプト作成
ここはそのまま参考にさせてもらっています。
vim post-receive
ファイルの内容は
GIT_REMOTE="backlog"
while read OLDREV NEWREV REFNAME
do
BRANCH=`git rev-parse --symbolic --abbrev-ref "${REFNAME}"`
echo "Push '${BRANCH}' branch to remote '${GIT_REMOTE}'"
git push --tag ${GIT_REMOTE} ${BRANCH}
done
カスタムフックスクリプトに実行権限をつけておく
chmod +x post-receive