GitLab Advent Calendar 2016の十二日目です。
GitLab.comにはリポジトリを1時間毎に自動でミラーリングする機能があります。
そこで本日は、GitHub.comとGitLab.comのリポジトリをミラーリングする方法を紹介します。
概要
GitLab Enterprise Edition(以下EE)には、gitのリポジトリを1時間毎にミラーリングする機能があります。
ミラーリング方式としてgitのpushとpullをサポートしています。そのため、push方式ではGitLabから他のリポジトリにミラーリング、pull方式では他のリポジトリからGitLabのリポジトリにミラーリングすることが出来ます。
なお、ミラーリングにあたり以下を考慮する必要があります。
- 対象のリポジトリは
http://
、https://
、またはgit://
のいずれかでアクセス出来る必要があります。 - 非公開リポジトリの場合は、以下のようにURLに認証情報を含める必要があります。
-
https://username:password@gitlab.company.com/group/project.git
。ちなみに、2段階認証を有効にしている場合は、パスワードの代わりにパーソナルアクセストークンを使用してください。
-
- リポジトリのインポートは15分でタイムアウトします。
- Git LFS/Annextオブジェクトは自動的に同期されません。そのため、手動でpush/pullする必要があります。
無料で利用できるGitLab.comは、GitLab EEで動いています。そのため、GitHub.comのミラーリポジトリを無料でGitLab.comに作成することが出来ます。
また、GitLab.comの利用料金については八日目の私の記事、「GitHub.com・BitBucket.org・GitLab.comの月額料金比較 + α」に詳しく書いてあるので、そちらをご参照ください。
GitHub.com -> GitLab.comのミラーリング方法
それでは、GitHub.comのリポジトリをGitLab.comにミラーリングする手順を解説します。
まずは、普通にGitLabの新規プロジェクトの作成ページに進んで、"Project Name"を入力します。
そして、"Import project from"の"Repo by URL"を選択し、"Git repository URL"にGitHubのリポジトリのURLを入力し、"Mirror repository"にチェックを入れます。
あとは、適当に他の設定をして"Create project"をクリックしてください。
また、既存のプロジェクトにミラーリングの設定をする場合は、プロジェクト画面の右上にある歯車アイコンの中にある"Mirror Repository"から同様にして設定することが出来ます。
なお、GitHub.comのリポジトリをGitLab.comにミラーリングして運用する際は、GitLab.com側には直接コミットしないように注意してください。GitLab.com側に手動でコミットしたブランチは、データのロストを避けるために自動同期されなくなります。
つまり、GitHub.com側のリポジトリにだけpushし、GitLab.com側のリポジトリは非常時のpullのみに使用して下さい。
GitLab.com -> GitHub.comのミラーリング方法
続いて、GitLab.comのリポジトリをGitHub.comにミラーリングする手順を解説します。
もし、GitHub.comで2段階認証を有効にしている場合は、最初に"personal access token"を作成する必要があります。Tokenの作成は、画面右上の"Setting"にある"Developer settings"の"Personal access token"で出来ます。画面右上の"Generate new token"をクリックすると新規Tokenの作成画面が表示されるので、"Token description"に適当な説明を入力し、"Selecet scopes"の"repo"にチェックを入れて"Generate token"をクリックしてください。
続いて、ミラーリングするGitLabプロジェクト画面の右上にある歯車アイコンの中にある"Mirror Repository"からミラーリングの設定を行います。設定は
"Push to remote repository"の"remote mirror repository"にチェックを入れて、"Git repository URL"にGitHubのリポジトリのURLを入力し、"Save changes"をクリックすれば完了です。この"Git repository URL"には、リポジトリにpush権限のあるユーザーとパスワード(2段階認証時はトークン)の情報を含めてください。
以降は1時間毎にGitLab.comのリポジトリからGitHub.comへのミラーリングが処理が実行されます。
なお、GitLab.comのリポジトリをGitHub.comにミラーリングして運用する際は、GitHub.com側には直接コミットしないように注意してください。GitHub.com側に手動でコミットしたブランチは、データのロストを避けるために自動同期されなくなります。
つまり、GitLab.com側のリポジトリにだけpushし、GitHub.com側のリポジトリは非常時のpullのみに使用して下さい。
まとめ
このように、GitHub.comとGitLab.comのリポジトリのミラーリングは簡単に設定することが出来ます。
万が一のバックアップとして、重要なリポジトリはGitHub.comとGitLab.comでミラーリングの設定をしておくと良いと思います。