リポジトリのミラーリング
外部ソースとの間でリポジトリを_ミラーリング_できます。どのリポジトリをソースとするかを選択できます。ブランチ、タグ、コミットは自動的に同期されます。
いくつかのミラーリング方法が存在します:
- プッシュ:GitLabから別の場所にリポジトリをミラーリングします。
- Pull: リポジトリを別の場所から GitLab Premium インスタンスにミラーリングします。
- 双方向のミラーリングも可能ですが、競合を引き起こす可能性があります。
以下の場合にリポジトリをミラーします:
- プロジェクトの正規バージョンがGitLabにマイグレーションしました。プロジェクトのコピーを以前のホームで提供し続けるには、GitLabリポジトリをプッシュミラーとして設定します。GitLab リポジトリに加えた変更は、古い場所にコピーされます。
- あなたの GitLab インスタンスは非公開ですが、いくつかのプロジェクトをオープンソースにしたいと考えています。
- あなたはGitLabにマイグレーションしましたが、プロジェクトの正規バージョンは他の場所にあります。あなたのGitLabリポジトリを他のプロジェクトのプルミラーとして設定します。あなたのGitLabリポジトリはプロジェクトのコミット、タグ、ブランチのコピーをプルします。それらはGitLabで利用できるようになります。
リポジトリミラーを作成
前提条件:
- 少なくともプロジェクトのメンテナーのロールを持っている必要があります。
- ミラーが
ssh://
で接続する場合、ホスト鍵がサーバ上で検出可能でなければなりません。
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- 設定] > [リポジトリ]を選択します。
- リポジトリをミラーリング]を展開します。
- Add newを選択します。
- Git リポジトリの URL を入力します。セキュリティ上の理由から、元のリポジトリへの URL は、ミラーリングプロジェクトのメンテナー ロールまたはオーナー ロールを持つユーザーにのみ表示されます。
- ミラーの方向を選択します。
-
ssh://
URLを入力した場合は、どちらかを選択します:- Detect host keys:GitLab はサーバーからホストキーを取得し、フィンガープリントを表示します。
- ホストキーを手動で入力し、SSHホストキーに入力します。
リポジトリをミラーリングするとき、GitLabは接続する前に、保存されたホストキーの少なくとも1つが一致することを確認します。この確認により、悪意のあるコードの注入やパスワードの盗難からミラーを守ることができます。
- 認証方法を選択します。詳細については、ミラーの認証方法を参照してください。
- SSH ホストキーで認証する場合は、ホストキーが正しいことを確認します。
- 乖離した参照に対する強制プッシュを防ぐには、以下を選択します。 分岐した参照を保持.
- オプション。ミラーするブランチの数を制限するには、保護されたブランチのみをミラーするを選択するか、特定のブランチをミラーするで正規表現を入力します。
- リポジトリのミラー化を選択します。
認証方法としてSSH public key
を選択すると、GitLab は GitLab リポジトリの公開鍵を生成します。この鍵をGitLab以外のサーバーに提供する必要があります。詳しくは、SSH 公開キーを入手するをご覧ください。
保護されたブランチのみをミラーリング
ミラーリングプロジェクトの保護ブランチだけを、リモートリポジトリから、あるいはリモートリポジトリにミラーリングすることができます。プルミラーリングの場合、ミラーリングプロジェクトの保護されていないブランチはミラーリングされず、分岐する可能性があります。
このオプションを使用するには、リポジトリミラーを作成するときに保護されたブランチだけをミラーする を選択してください。
特定のブランチをミラーします
ミラーの更新
ミラーリポジトリが更新されると、すべての新しいブランチ、タグ、コミットがプロジェクトのアクティビティフィードに表示されます。GitLab のリポジトリミラーは自動的に更新されます。手動で更新をトリガーすることもできます:
- GitLab.com では、最大で 5 分に 1 回です。
- セルフマネージドインスタンスで管理者が設定したプルミラーリング間隔の制限に従います。
アップデートの強制
ミラーは自動的に更新されるようにスケジュールされていますが、更新を強制することもできます:
- ミラーが既に更新されている場合。
- プルミラーリング制限の間隔 (秒) は、前回の更新から経過していません。
前提条件
- 少なくともプロジェクトのメンテナーのロールを持っている必要があります。
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- 設定] > [リポジトリ]を選択します。
- リポジトリをミラーリング]を展開します。
- Mirrored repositoriesにスクロールし、更新するミラーを特定します。
- Update now({retry})を選択します:
ミラーの認証方法
ミラーを作成する際には、認証方法を設定する必要があります。GitLab は以下の認証方法をサポートしています:
- SSH認証。
- パスワード
パスワード認証を使用する場合は、必ずユーザー名を指定してください。プロジェクトアクセストークンや グループアクセストークンの場合は、ユーザー名(トークン名ではない)とトークンをパスワードとして使用します。
SSH認証
SSH認証は相互認証です:
- リポジトリへのアクセスが許可されていることをサーバーに証明する必要があります。
- また、サーバーは、そのサーバーが誰であるかを証明しなければなりません。
SSH認証では、パスワードや_公開鍵として_自分の認証情報を提供します。もう一方のリポジトリが存在するサーバーは、その認証情報を_ホスト鍵として_提供します。このホスト鍵の指紋を手動で確認する必要があります。
SSH 経由でミラーリングする場合(ssh://
URL を使用する)、次の方法で認証できます:
- パスワードベースの認証。
- 公開鍵認証。この方法はパスワード認証よりもセキュリティが高いことが多く、特に相手のリポジトリがデプロイ鍵に対応している場合に有効です。
SSH 公開キーを取得します。
リポジトリをミラーリングし、認証方法としてSSH公開キーを選択すると、GitLabはあなたのために公開キーを生成します。GitLab 以外のサーバーは、GitLab リポジトリとの信頼を確立するためにこの鍵を必要とします。SSH 公開キーをコピーするには、以下の手順に従います:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- 設定] > [リポジトリ]を選択します。
- リポジトリをミラーリング]を展開します。
- Mirrored repositoriesまでスクロールします。
- 正しいリポジトリを確認し、SSH公開キーをコピーする({copy-to-clipboard})を選択します。
- 公開 SSH キーをもう一方のリポジトリの設定に追加します:
- 相手のリポジトリが GitLab でホストされている場合は、公開 SSH キーをデプロイキーとして追加します。
- 他のリポジトリが他の場所でホストされている場合は、キーをユーザーの
authorized_keys
ファイルに追加します。公開 SSH キーをすべてファイルに貼り付けて保存します。
いつでも鍵を変更しなければならない場合は、ミラーを削除して追加し直すことで新しい鍵を生成できます。もう一方のリポジトリを新しい鍵で更新して、ミラーを実行し続けます。
ホスト鍵の検証
ホスト鍵を使うときは、常にフィンガープリントが期待するものと一致していることを確認してください。GitLab.com や他のコードホスティングサイトはフィンガープリントを公開しており、確認することができます:
その他のプロバイダーは様々です。以下のコマンドを使えば、安全に鍵指紋を集めることができます:
- セルフマネジメントGitLabを実行します。
- もう一方のリポジトリのサーバーにアクセスできること。
$ cat /etc/ssh/ssh_host*pub | ssh-keygen -E md5 -l -f -
256 MD5:f4:28:9f:23:99:15:21:1b:bf:ed:1f:8e:a0:76:b2:9d root@example.com (ECDSA)
256 MD5:e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73 root@example.com (ED25519)
2048 MD5:3f:72:be:3d:62:03:5c:62:83:e8:6e:14:34:3a:85:1d root@example.com (RSA)
古いバージョンの SSH では、コマンドから-E md5
を削除する必要があるかもしれません。
関連するトピック
- リポジトリミラーリングのトラブルシューティング
- プルミラーリング間隔の設定
- プロジェクトのミラーを無効にする
- シークレットファイルとミラーリング