プロジェクトリモートミラー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 | 文字列 | ミラー更新のステータス。使用可能な値: none、scheduled、started、finished、failed。 |
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 | 文字列 | ミラー更新のステータス。使用可能な値: none、scheduled、started、finished、failed。 |
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_key、password。 |
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 | 文字列 | ミラー更新のステータス。使用可能な値: none、scheduled、started、finished、failed。 |
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_key、password。 |
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 | 文字列 | ミラー更新のステータス。使用可能な値: none、scheduled、started、finished、failed。 |
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"