- すべてのプロジェクトリポジトリの移動を取得します。
- プロジェクトのすべてのリポジトリストレージの移動を取得します。
- 単一のプロジェクトリポジトリのストレージの移動を取得します。
- プロジェクトの単一のリポジトリストレージの移動を取得します。
- プロジェクトのリポジトリストレージの移動をスケジュールします。
- ストレージシャード上のすべてのプロジェクトのリポジトリストレージの移動をスケジュールします。
プロジェクトリポジトリのAPI移動
GitLab 13.0から導入されました。
Wikiやデザインリポジトリを含むプロジェクトリポジトリをストレージ間で移動することができます。このAPIはGitaly Clusterへのマイグレーションなどに役立ちます。
プロジェクトリポジトリの移動が処理されると、異なる状態を遷移します。state
:
-
initial
:レコードは作成されましたが、バックグラウンドジョブはまだスケジュールされていません。 -
scheduled
:バックグラウンド・ジョブはスケジュール済みです。 -
started
:プロジェクトリポジトリをコピー先ストレージにコピー中です。 -
replicated
:プロジェクトを移動しました。 -
failed
:プロジェクトのリポジトリがコピーに失敗したか、チェックサムが一致しませんでした。 -
finished
:プロジェクトが移動され、ソース・ストレージ上のリポジトリが削除されました。 -
cleanup failed
:プロジェクトは移動されましたが、ソースストレージ上のリポジトリは削除できませんでした。
データの整合性を確保するため、プロジェクトは移動の間、一時的に読み取り専用状態になります。この間、ユーザーが新しいコミットをプッシュしようとすると、The repository is temporarily
read-only. Please try again later.
メッセージが表示されます。
このAPIを使用するには、管理者としての認証が必要です。
他のリポジトリタイプについては、こちらをご覧ください:
- スニペットリポジトリの移動APIを参照してください。
- グループリポジトリ移動API。
すべてのプロジェクトリポジトリの移動を取得します。
GET /project_repository_storage_moves
デフォルトでは、API の結果はページ分割されているため、GET
リクエストは一度に 20 件の結果を返します。
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_repository_storage_moves"
応答例
[
{
"id": 1,
"created_at": "2020-05-07T04:27:17.234Z",
"state": "scheduled",
"source_storage_name": "default",
"destination_storage_name": "storage2",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
}
]
プロジェクトのすべてのリポジトリストレージの移動を取得します。
GET /projects/:project_id/repository_storage_moves
デフォルトでは、API の結果はページ分割されているため、GET
リクエストは一度に 20 件の結果を返します。
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
project_id | 整数。 | yes | プロジェクトのID |
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves"
応答例
[
{
"id": 1,
"created_at": "2020-05-07T04:27:17.234Z",
"state": "scheduled",
"source_storage_name": "default",
"destination_storage_name": "storage2",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
}
]
単一のプロジェクトリポジトリのストレージの移動を取得します。
GET /project_repository_storage_moves/:repository_storage_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
repository_storage_id | 整数。 | yes | プロジェクトリポジトリの移動先のID |
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_repository_storage_moves/1"
応答例
{
"id": 1,
"created_at": "2020-05-07T04:27:17.234Z",
"state": "scheduled",
"source_storage_name": "default",
"destination_storage_name": "storage2",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
}
プロジェクトの単一のリポジトリストレージの移動を取得します。
GET /projects/:project_id/repository_storage_moves/:repository_storage_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
project_id | 整数。 | yes | プロジェクトのID |
repository_storage_id | 整数。 | yes | プロジェクトリポジトリの移動先のID |
リクエストの例
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves/1"
応答例
{
"id": 1,
"created_at": "2020-05-07T04:27:17.234Z",
"state": "scheduled",
"source_storage_name": "default",
"destination_storage_name": "storage2",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
}
プロジェクトのリポジトリストレージの移動をスケジュールします。
POST /projects/:project_id/repository_storage_moves
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
project_id | 整数。 | yes | プロジェクトのID |
destination_storage_name | 文字列です。 | いいえ | 保存先ストレージシャードの名前。GitLab 13.5以降では、指定がない場合はストレージの重みに基づいて自動的に選択されます。 |
リクエストの例
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \
--data '{"destination_storage_name":"storage2"}' \
"https://gitlab.example.com/api/v4/projects/1/repository_storage_moves"
応答例
{
"id": 1,
"created_at": "2020-05-07T04:27:17.234Z",
"state": "scheduled",
"source_storage_name": "default",
"destination_storage_name": "storage2",
"project": {
"id": 1,
"description": null,
"name": "project1",
"name_with_namespace": "John Doe2 / project1",
"path": "project1",
"path_with_namespace": "namespace1/project1",
"created_at": "2020-05-07T04:27:17.016Z"
}
}
ストレージシャード上のすべてのプロジェクトのリポジトリストレージの移動をスケジュールします。
GitLab 13.7 で導入されました。
ソースストレージシャードに保存されている各プロジェクトリポジトリのリポジトリ移動をスケジュールします。このエンドポイントは全てのプロジェクトを一度にマイグレーションします。詳しくはMove all projects をご覧ください。
POST /project_repository_storage_moves
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
source_storage_name | 文字列です。 | yes | ソースストレージシャードの名前。 |
destination_storage_name | 文字列です。 | いいえ | 宛先ストレージ・シャードの名前。指定されていない場合は、ストレージの重みに基づいてストレージが自動的に選択されます。 |
リクエストの例
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \
--data '{"source_storage_name":"default"}' \
"https://gitlab.example.com/api/v4/project_repository_storage_moves"
応答例
{
"message": "202 Accepted"
}