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

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

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

プロジェクトのリポジトリ設定で定義されたプッシュミラーは、リモートミラーと呼ばれます。これらのミラーの状態は、リモートミラー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を使用してプルミラーを設定する方法を説明します。

プッシュミラーを作成

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

POST /projects/:id/remote_mirrors

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
url文字列はいリポジトリがミラーリングされるターゲットURL。
auth_method文字列いいえミラーの認証方法: 指定できる値: ssh_public_keypassword
enabledブール値いいえtrueの場合、ミラーが有効になります。
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の場合、ミラーが有効になります。
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"