gitlab と backlog の git リポジトリミラーリング (gitlab → backlog)

gitlab と backlog の git リポジトリミラーリング

社内のネットワークやいろいろなアレがあって
社内の gitlab から直接 CI サーバーへ接続できないけど、
gitlab も CI も backlog へはアクセスできる時などに……。

  • GitLab Community Edition 8.12.7

github へのミラーリング方法を記載されておられる下記ページを参考にしています。

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