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

プロジェクトリモートミラーAPI

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

このAPIを使用して、リモートミラーを管理できます。このリモートミラーAPIを使用して、これらのミラーの状態をクエリおよび変更できます。

セキュリティ上の理由から、API応答のurl属性からは、ユーザー名とパスワード情報が常に削除されます。

プルミラーは、表示および更新のために別のAPIエンドポイントを使用します。

プロジェクトのすべてのリモートミラーを一覧表示

指定されたプロジェクトのすべてのリモートミラーを一覧表示します。

GET /projects/:id/remote_mirrors

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
auth_method文字列ミラーに使用される認証方法。
enabledブール値trueの場合、ミラーが有効になります。
host_keys配列リモートミラーのSSHホストキーフィンガープリントの配列。
id整数リモートミラーのID。
keep_divergent_refsブール値trueの場合、ミラーリング時に分岐したrefsが保持されます。
last_error文字列最後のミラー試行からのエラーメッセージ。nullの場合、成功。
last_successful_update_at文字列最後のミラー更新が正常に完了したタイムスタンプ。ISO 8601形式。
last_update_at文字列最後のミラー試行のタイムスタンプ。ISO 8601形式。
last_update_started_at文字列最後のミラー試行が開始されたときのタイムスタンプ。ISO 8601形式。
only_protected_branchesブール値trueの場合、保護ブランチのみがミラーされます。
update_status文字列ミラー更新のステータス。指定可能な値: nonescheduledstartedfinishedfailed
url文字列セキュリティのために認証情報が削除されたミラーURL。

リクエスト例:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/42/remote_mirrors"

レスポンス例:

[
  {
    "enabled": true,
    "id": 101486,
    "auth_method": "ssh_public_key",
    "last_error": null,
    "last_successful_update_at": "2020-01-06T17:32:02.823Z",
    "last_update_at": "2020-01-06T17:32:02.823Z",
    "last_update_started_at": "2020-01-06T17:31:55.864Z",
    "only_protected_branches": true,
    "keep_divergent_refs": true,
    "update_status": "finished",
    "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git",
    "host_keys": [
      {
        "fingerprint_sha256": "SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw"
      }
    ]
  }
]

プロジェクトのリモートミラーを取得

指定されたプロジェクトのリモートミラーを取得します。

GET /projects/:id/remote_mirrors/:mirror_id

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
mirror_id整数はいリモートミラーのID。

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
enabledブール値trueの場合、ミラーが有効になります。
id整数リモートミラーのID。
host_keys配列リモートミラーのSSHホストキーフィンガープリントの配列。
keep_divergent_refsブール値trueの場合、ミラーリング時に分岐したrefsが保持されます。
last_error文字列最後のミラー試行からのエラーメッセージ。nullの場合、成功。
last_successful_update_at文字列最後のミラー更新が正常に完了したタイムスタンプ。ISO 8601形式。
last_update_at文字列最後のミラー試行のタイムスタンプ。ISO 8601形式。
last_update_started_at文字列最後のミラー試行が開始されたときのタイムスタンプ。ISO 8601形式。
only_protected_branchesブール値trueの場合、保護ブランチのみがミラーされます。
update_status文字列ミラー更新のステータス。指定可能な値: nonescheduledstartedfinishedfailed
url文字列セキュリティのために認証情報が削除されたミラーURL。

リクエスト例:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"

レスポンス例:

{
  "enabled": true,
  "id": 101486,
  "last_error": null,
  "last_successful_update_at": "2020-01-06T17:32:02.823Z",
  "last_update_at": "2020-01-06T17:32:02.823Z",
  "last_update_started_at": "2020-01-06T17:31:55.864Z",
  "only_protected_branches": true,
  "keep_divergent_refs": true,
  "update_status": "finished",
  "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git",
  "host_keys": [
    {
      "fingerprint_sha256": "SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw"
    }
  ]
}

リモートミラーの公開キーを取得

SSH認証を使用する、指定されたリモートミラーの公開キーを取得します。

GET /projects/:id/remote_mirrors/:mirror_id/public_key

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
mirror_id整数はいリモートミラーのID。

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
public_key文字列リモートミラーの公開キー。

リクエスト例:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486/public_key"

レスポンス例:

{
  "public_key": "ssh-rsa AAAAB3NzaC1yc2EA..."
}

プルミラーを作成

プロジェクトのプルミラーリングAPIを使用して、プルミラーを設定する方法を学習してください。

プッシュミラーを作成

各プロジェクトには、最大10個の有効なプッシュミラーを設定できます。詳細については、プロジェクトプッシュミラーの最大数を参照してください。

プロジェクトのプッシュミラーを作成します。プッシュミラーリングはデフォルトで無効になっています。有効にするには、ミラーの作成時にオプションパラメータenabledを含めます。

POST /projects/:id/remote_mirrors

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
url文字列はいリポジトリがミラーリングされるターゲットURL。
auth_method文字列いいえミラー認証方法。指定可能な値: ssh_public_keypassword
enabledブール値いいえtrueの場合、ミラーが有効になります。
host_keys文字列の配列いいえベア形式(ssh-ed25519 AAAA...)または完全なknown_hosts形式(hostname ssh-ed25519 AAAA...)のSSHホストキー。ベアキーは、ミラーURLからホスト名を使用します。
keep_divergent_refsブール値いいえtrueの場合、ミラーリング時に分岐したrefsが保持されます。
mirror_branch_regex文字列いいえブランチ名をミラーするための正規表現。正規表現に一致する名前のブランチのみがミラーされます。only_protected_branchesを無効にする必要があります。PremiumおよびUltimateのみです。
only_protected_branchesブール値いいえtrueの場合、保護ブランチのみがミラーされます。

成功した場合、201 Createdと次のレスポンス属性を返します:

属性説明
auth_method文字列ミラーに使用される認証方法。
enabledブール値trueの場合、ミラーが有効になります。
host_keys配列リモートミラーのSSHホストキーフィンガープリントの配列。
id整数リモートミラーのID。
keep_divergent_refsブール値trueの場合、ミラーリング時に分岐したrefsが保持されます。
last_error文字列最後のミラー試行からのエラーメッセージ。nullの場合、成功。
last_successful_update_at文字列最後のミラー更新が正常に完了したタイムスタンプ。ISO 8601形式。
last_update_at文字列最後のミラー試行のタイムスタンプ。ISO 8601形式。
last_update_started_at文字列最後のミラー試行が開始されたときのタイムスタンプ。ISO 8601形式。
only_protected_branchesブール値trueの場合、保護ブランチのみがミラーされます。
update_status文字列ミラー更新のステータス。指定可能な値: nonescheduledstartedfinishedfailed
url文字列セキュリティのために認証情報が削除されたミラーURL。

リクエスト例:

curl --request POST \
  --data "url=https://username:token@example.com/gitlab/example.git" \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/42/remote_mirrors"

レスポンス例:

{
    "enabled": false,
    "id": 101486,
    "auth_method": "password",
    "last_error": null,
    "last_successful_update_at": null,
    "last_update_at": null,
    "last_update_started_at": null,
    "only_protected_branches": false,
    "keep_divergent_refs": false,
    "update_status": "none",
    "url": "https://*****:*****@example.com/gitlab/example.git",
    "host_keys": [
      {
        "fingerprint_sha256": "SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw"
      }
    ]
}

プロジェクト内のリモートミラーを更新

指定されたリモートミラーの設定または稼働状況を更新します。

PUT /projects/:id/remote_mirrors/:mirror_id

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
mirror_id整数はいリモートミラーのID。
auth_method文字列いいえミラー認証方法。指定可能な値: ssh_public_keypassword
enabledブール値いいえtrueの場合、ミラーが有効になります。
host_keys文字列の配列いいえベア形式(ssh-ed25519 AAAA...)または完全なknown_hosts形式(hostname ssh-ed25519 AAAA...)のSSHホストキー。ベアキーは、ミラーURLからホスト名を使用します。
keep_divergent_refsブール値いいえtrueの場合、ミラーリング時に分岐したrefsが保持されます。
mirror_branch_regex文字列いいえブランチ名をミラーするための正規表現。正規表現に一致する名前のブランチのみがミラーされます。only_protected_branchesが有効な場合は動作しません。PremiumおよびUltimateのみです。
only_protected_branchesブール値いいえtrueの場合、保護ブランチのみがミラーされます。

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
auth_method文字列ミラーに使用される認証方法。
enabledブール値trueの場合、ミラーが有効になります。
host_keys配列リモートミラーのSSHホストキーフィンガープリントの配列。
id整数リモートミラーのID。
keep_divergent_refsブール値trueの場合、ミラーリング時に分岐したrefsが保持されます。
last_error文字列最後のミラー試行からのエラーメッセージ。nullの場合、成功。
last_successful_update_at文字列最後のミラー更新が正常に完了したタイムスタンプ。ISO 8601形式。
last_update_at文字列最後のミラー試行のタイムスタンプ。ISO 8601形式。
last_update_started_at文字列最後のミラー試行が開始されたときのタイムスタンプ。ISO 8601形式。
only_protected_branchesブール値trueの場合、保護ブランチのみがミラーされます。
update_status文字列ミラー更新のステータス。指定可能な値: nonescheduledstartedfinishedfailed
url文字列セキュリティのために認証情報が削除されたミラーURL。

リクエスト例:

curl --request PUT \
  --data "enabled=false" \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"

レスポンス例:

{
    "enabled": false,
    "id": 101486,
    "auth_method": "password",
    "last_error": null,
    "last_successful_update_at": "2020-01-06T17:32:02.823Z",
    "last_update_at": "2020-01-06T17:32:02.823Z",
    "last_update_started_at": "2020-01-06T17:31:55.864Z",
    "only_protected_branches": true,
    "keep_divergent_refs": true,
    "update_status": "finished",
    "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git",
    "host_keys": [
      {
        "fingerprint_sha256": "SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw"
      }
    ]
}

プッシュミラーの強制プッシュ更新

プッシュミラーへの更新を強制します

POST /projects/:id/remote_mirrors/:mirror_id/sync

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
mirror_id整数はいリモートミラーのID。

成功した場合、204 No Contentを返します。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486/sync"

プロジェクトからリモートミラーを削除

指定されたプロジェクトからリモートミラーを削除します。

DELETE /projects/:id/remote_mirrors/:mirror_id

サポートされている属性は以下のとおりです:

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
mirror_id整数はいリモートミラーのID。

成功した場合、204 No Contentを返します。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"