54
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitLabAdvent Calendar 2016

Day 12

GitHub.comとGitLab.comのリポジトリをミラーリングする

Last updated at Posted at 2016-12-11

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"にチェックを入れます。
repository_mirroring_new_project.png
あとは、適当に他の設定をして"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段階認証時はトークン)の情報を含めてください。
repository_mirroring_push_settings.png
以降は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でミラーリングの設定をしておくと良いと思います。

54
42
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?