正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

リポジトリのミラーリング

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

リポジトリを外部ソースとの間でミラーリングできます。ソースとして機能するリポジトリを選択できます。ブランチ、タグ、コミットは自動的に同期されます。

ミラーリングには複数の方法があります:

  • プッシュ: GitLabから別の場所にリポジトリをミラーリングします。
  • プル: 別の場所からリポジトリをミラーリングします。PremiumプランおよびUltimateプランで利用できます。
  • 双方向ミラーリングも利用できますが、競合が発生する可能性があります。

以下の場合にリポジトリをミラーリングします:

  • プロジェクトの標準的なバージョンがGitLabに移行された場合。以前のホームでプロジェクトのコピーを提供し続けるには、GitLabリポジトリをプッシュミラーとして設定します。GitLabリポジトリに加えた変更は、古い場所にコピーされます。
  • GitLabインスタンスはプライベートだが、一部のプロジェクトをオープンソースにしたい場合。
  • GitLabに移行したが、プロジェクトの標準的なバージョンは別の場所にある場合。GitLabリポジトリを他のプロジェクトのプルミラーとして設定します。GitLabリポジトリは、プロジェクトのコミット、タグ、およびブランチのコピーをプルします。それらはGitLabで利用できるようになります。

以下はサポートされていません:

  • SCP形式のURL。SCP形式のURLを実装する作業を実行中です。詳細および進捗状況の追跡については、イシュー18993を参照してください。
  • 簡易HTTPプロトコルを介したリポジトリのミラーリング。

リポジトリのミラーを作成する

前提要件:

  • プロジェクトのメンテナーロール以上を持っている必要があります。
  • ミラーがssh://で接続する場合は、サーバー上でホストキーが検出可能であるか、キーのローカルコピーを持っている必要があります。
  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. 設定 > リポジトリを選択します。

  3. リポジトリのミラーリングを展開します。

  4. 新規を追加を選択します。

  5. GitリポジトリのURLを入力します。リポジトリは、http://https://ssh://、またはgit://経由でアクセスできる必要があります。

  6. ミラーの方向を選択します。詳細については、プルミラーリングおよびプッシュミラーリングを参照してください。

  7. ssh://のURLを入力した場合は、次のいずれかを選択します:

    • ホストキーを検出: GitLabはサーバーからホストキーをフェッチして、フィンガープリントを表示します。
    • ホストキーの手動入力し、SSH host key(SSHホストキー)にホストキーを入力します。

    リポジトリをミラーリングする場合、GitLabは接続する前に、保存されたホストキーの少なくとも1つが一致することを確認します。このチェックにより、悪意のあるコードインジェクションやパスワードの盗難からミラーを保護することができます。

    • SSH認証でリポジトリのミラーを作成するには、次の例を参照してください。
  8. 認証方法を選択します。詳細については、ミラーの認証方法を参照してください。

  9. SSHホストキーで認証する場合は、ホストキーを検証し、正しいことを確認します。

  10. 分岐した参照に対する強制プッシュを防ぐには、分岐した参照を保持するを選択します。詳細については、分岐した参照を保持するを参照してください。

  11. オプション。ミラーリングするブランチの数を制限するには、保護ブランチのみミラーを選択するか、特定のブランチをミラーに正規表現を入力します。

  12. ミラーリポジトリを選択します。

例: SSH認証を使用してミラーを作成する

認証方法としてSSH public keyを選択すると、GitLabはGitLabリポジトリの公開キーを生成します。このキーをGitLab以外のサーバーに提供する必要があります。詳細については、SSH公開キーを取得するを参照してください。

SSH認証を使用してリポジトリをミラーリングするには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. 設定 > リポジトリを選択します。

  3. リポジトリのミラーリングを展開します。

  4. 新規を追加を選択します。

  5. GitリポジトリのURLを入力します。ssh://gitlab.com/gitlab-org/gitlab.git形式でURLを指定します。

    SSH URLは、SCP形式のURL(git@host:path/to/repo.git)ではなく、ssh://host/path/to/repo.git形式で使用する必要があります。コロン(:)をスラッシュ(/)に置き換え、ssh://プレフィックスを追加します。

  6. ミラーの方向を選択します。詳細については、プルミラーリングおよびプッシュミラーリングを参照してください。

  7. ホストキーを検出またはホストキーの手動入力を選択します。

  8. 認証方法フィールドで、SSH公開キーを選択します

  9. ユーザー名フィールドに、gitを追加します。

  10. オプション。ミラーユーザーおよびブランチをミラーを設定します。

  11. ミラーリポジトリを選択します。

  12. SSH公開キーをコピーして、GitLab以外のサーバーに提供します。

保護されたブランチのみをミラーリングする

リモートリポジトリとの間で、ミラーリングプロジェクトの保護ブランチのみをミラーリングするように選択できます。プルミラーリングの場合、ミラーリングプロジェクトの保護されていないブランチはミラーリングされず、分岐する可能性があります。

このオプションを使用するには、リポジトリミラーを作成するときにOnly mirror protected branches(保護されたブランチのみミラー)を選択します。

特定のブランチをミラーリングする

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

re2正規表現に一致する名前のブランチのみをミラーリングするには、特定のブランチをミラーフィールドに正規表現を入力します。正規表現に一致しない名前のブランチはミラーリングされません。

ミラーを更新する

ミラーリポジトリが更新されると、すべての新しいブランチ、タグ、およびコミットがプロジェクトのアクティビティーフィードに表示されます。GitLabのリポジトリミラーは自動的に更新されます。手動で更新をトリガーすることもできます:

  • GitLab.comでは、最大で5分ごとに1回更新します。
  • GitLab Self-Managedインスタンスで、管理者が設定したプルミラーリング間隔の制限に従って更新します。

GitLabサイレントモードは、プッシュとプルの両方の更新を無効にします。

強制的に更新する

ミラーは自動的に更新されるようにスケジュール済みですが、次の場合を除き、強制的に即時更新を実行することができます:

  • ミラーが既に更新されている。
  • プルミラーリング制限の間隔(秒)が、最後の更新から経過していない。

前提要件:

  • プロジェクトのメンテナーロール以上を持っている必要があります。
  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > リポジトリを選択します。
  3. リポジトリのミラーリングを展開します。
  4. ミラーリングされたリポジトリまでスクロールし、更新するミラーを特定します。
  5. 今すぐ更新 retry )を選択します。

ミラーの認証方法

ミラーを作成する際は、認証方法を設定する必要があります。GitLabは、以下の認証方法をサポートしています:

  • SSH認証
  • ユーザー名とパスワード。

プロジェクトアクセストークンまたはグループアクセストークンの場合は、ユーザー名として空白でない値を、パスワードとしてトークンを使用します。

SSH認証

SSH認証は相互認証です:

  • リポジトリへのアクセスが許可されていることをサーバーに証明する必要があります。
  • サーバーも、そのサーバーが誰であるかを証明する必要があります。

SSH認証では、認証情報をパスワードまたは公開キーとして提供します。他のリポジトリが存在するサーバーでは、その認証情報をホストキーとして提供します。手動でこのホストキーのフィンガープリントを検証する必要があります。

SSH経由でミラーリングする場合(ssh://URLを使用する)は、以下を使用して認証できます:

  • HTTPS経由と同様に、パスワードベースの認証。
  • 公開キー認証。これは、特に他のリポジトリがデプロイキーをサポートしている場合に、パスワード認証よりも安全性が高いことが多い方法です。

SSH公開キーを取得する

リポジトリをミラーリングし、認証方法としてSSH公開キーを選択すると、GitLabは公開キーを生成します。GitLab以外のサーバーは、GitLabリポジトリとの信頼性を確立するためにこのキーを必要とします。SSH公開キーをコピーするには、以下の手順を実行します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > リポジトリを選択します。
  3. リポジトリのミラーリングを展開します。
  4. ミラーリングされたリポジトリまでスクロールします。
  5. 正しいリポジトリを特定し、SSH公開キーをコピー copy-to-clipboard )を選択します。
  6. SSH公開キーを他のリポジトリの設定に追加します:
    • 他のリポジトリがGitLabでホストされている場合は、SSH公開キーをデプロイキーとして追加します。
    • 他のリポジトリが他の場所でホストされている場合は、キーをユーザーのauthorized_keysファイルに追加します。すべてのSSH公開キーをファイルの独自の行に貼り付けて保存します。

キーを変更する必要がある場合はいつでも、ミラーを削除して再度追加して新しいキーを生成できます。ミラーの実行を維持するには、新しいキーで他のリポジトリを更新します。

生成されたキーは、ファイルシステムではなくGitLabデータベースに保存されます。そのため、ミラー用のSSH公開キーの認証は、事前受信フックでは使用できません。

ホストキーを検証する

ホストキーを使用する場合は、フィンガープリントが希望するものと一致することを必ず確認してください。以下のGitLab.comおよびその他のコードホスティングサイトでは、確認用のフィンガープリントを公開しています:

他のプロバイダーではさまざまです。以下の場合は、次のコマンドを使用して安全にキーのフィンガープリントを収集することができます:

  • GitLab Self-Managedを実行する場合。
  • 他のリポジトリのサーバーにアクセスできる場合。
$ 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を削除する必要がある場合があります。