プロジェクトのリモートミラーAPI
プロジェクトのリポジトリ設定で定義したプッシュミラーを「リモートミラー」と呼びます。これらのミラーの状態をクエリしたり変更したりするには、 リモートミラー API を使用します。
セキュリティ上の理由から、API レスポンスのurl
属性にはユーザー名とパスワードの情報が含まれません。
プルミラーは、別の API エンドポイントを使用してこれらの情報を表示および更新します。
プロジェクトのリモートミラーの一覧
リモートミラーとそのステータスの配列を返します:
GET /projects/:id/remote_mirrors
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors"
応答例
[
{
"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"
}
]
プロジェクトのリモートミラーを取得します。
GitLab 14.10で導入されました。
リモートミラーとそのステータスを返します:
GET /projects/:id/remote_mirrors/:mirror_id
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "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"
}
プルミラーの作成
プロジェクトAPIを使用してプルミラーを設定する方法について説明します。
プッシュミラーの作成
POST /projects/:id/remote_mirrors
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
url | 文字列 | yes | リポジトリのミラー先のURL。 |
enabled | ブール値 | いいえ | ミラーが有効かどうかを決定します。 |
keep_divergent_refs | ブール値 | いいえ | 分岐参照をスキップするかどうかを決定します。 |
only_protected_branches | ブール値 | いいえ | 保護されたブランチのみがミラーされるかどうかを決定します。 |
mirror_branch_regex
| 文字列 | いいえ | 正規表現を含みます。正規表現に一致する名前のブランチのみがミラーされます。only_protected_branches が無効になっている必要があります。 |
リクエストの例
curl --request POST --data "url=https://username:token@example.com/gitlab/example.git" \
--header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors"
応答例
{
"enabled": false,
"id": 101486,
"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"
}
リモートミラーの属性の更新
リモートミラーのオン/オフを切り替えたり、ミラーするブランチの種類を変更したりできます:
PUT /projects/:id/remote_mirrors/:mirror_id
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
mirror_id | 整数 | yes | リモートミラーID。 |
enabled | ブール値 | いいえ | ミラーが有効かどうかを決定します。 |
keep_divergent_refs | ブール値 | いいえ | 分岐参照をスキップするかどうかを決定します。 |
only_protected_branches | ブール値 | いいえ | 保護されたブランチのみがミラーされるかどうかを決定します。 |
mirror_branch_regex
| 文字列 | いいえ | 正規表現にマッチする名前のブランチだけをミラーするかどうかを指定します。only_protected_branches が有効な場合は動作しません。 |
リクエストの例
curl --request PUT --data "enabled=false" --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"
応答例
{
"enabled": false,
"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"
}
リモートミラーの削除
GitLab 14.10で導入されました。
リモートミラーを削除
DELETE /projects/:id/remote_mirrors/:mirror_id
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
mirror_id | 整数 | yes | リモートミラーID |
リクエストの例
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"