ダイレクト転送APIによるグループおよびプロジェクトのマイグレーション

直接転送APIによるグループマイグレーションでは、直接転送によるグループマイグレーションで開始したマイグレーションを開始したり、進捗を確認したりすることができます。

caution
この API を使用したプロジェクトのマイグレーションはベータ版です。この機能は本番環境では使用できません。

前提条件

直接転送APIによるグループマイグレーションの前提条件については、直接転送によるグループマイグレーションの前提条件を参照してください。

新しいグループまたはプロジェクトのマイグレーションの開始

新しいグループやプロジェクトのマイグレーションを開始するには、このエンドポイントを使います。指定します:

  • entities[group_entity] を指定してグループをマイグレーションします。
  • entities[project_entity] プロジェクトをマイグレーションします。
POST /bulk_imports
属性種類必須説明
configurationハッシュyesソースGitLabインスタンス設定。
configuration[url]文字列yesソースGitLabインスタンスURL。
configuration[access_token]文字列yesソースGitLabインスタンスへのアクセストークン。
entities配列yesインポートするエンティティのリスト。
entities[source_type]文字列yesソースエンティティのタイプ。有効な値はgroup_entity (GitLab 14.2以降)とproject_entity (GitLab 15.11以降)。
entities[source_full_path]文字列yesインポートするエンティティのソースフルパス。
entities[destination_slug]文字列yesエンティティの宛先スラッグ。
entities[destination_name]文字列いいえ非推奨:代わりにdestination_slug 。エンティティの宛先スラッグ。
entities[destination_namespace]文字列yesエンティティの宛先名前空間。
entities[migrate_projects]ブール値いいえグループのすべてのネストしたプロジェクトもインポートします(source_typegroup_entity の場合)。デフォルトはtrueです。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/bulk_imports" \
  --header "Content-Type: application/json" \
  --data '{
    "configuration": {
      "url": "http://gitlab.example/",
      "access_token": "access_token"
    },
    "entities": [
      {
        "source_full_path": "source/full/path",
        "source_type": "group_entity",
        "destination_slug": "destination_slug",
        "destination_namespace": "destination/namespace/path"
      }
    ]
  }'
{ "id": 1, "status": "created", "source_type": "gitlab", "created_at": "2021-06-18T09:45:55.358Z", "updated_at": "2021-06-18T09:46:27.003Z" }

すべてのグループまたはプロジェクトのマイグレーションを一覧表示します。

GET /bulk_imports
属性種類必須説明
per_page整数。いいえページごとに返すレコード数。
page整数。いいえ取得するPages。
sort文字列です。いいえ asc 、またはdesc 作成日順に descソートされたレコードを返しますdesc 。デフォルトは desc
status文字列です。いいえインポートステータス。

ステータスは以下のいずれかになります:

  • created
  • started
  • finished
  • failed
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/bulk_imports?per_page=2&page=1"
[
    {
        "id": 1,
        "status": "finished",
        "source_type": "gitlab",
        "created_at": "2021-06-18T09:45:55.358Z",
        "updated_at": "2021-06-18T09:46:27.003Z"
    },
    {
        "id": 2,
        "status": "started",
        "source_type": "gitlab",
        "created_at": "2021-06-18T09:47:36.581Z",
        "updated_at": "2021-06-18T09:47:58.286Z"
    }
]

すべてのグループまたはプロジェクトのマイグレーションのエンティティを一覧表示します。

GET /bulk_imports/entities
属性種類必須説明
per_page整数。いいえページごとに返すレコード数。
page整数。いいえ取得するPages。
sort文字列です。いいえ asc 、またはdesc 作成日順に descソートされたレコードを返しますdesc 。デフォルトは desc
status文字列です。いいえインポートステータス。

ステータスは以下のいずれかになります:

  • created
  • started
  • finished
  • failed
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/bulk_imports/entities?per_page=2&page=1&status=started"
[
    {
        "id": 1,
        "bulk_import_id": 1,
        "status": "finished",
        "source_full_path": "source_group",
        "destination_slug": "destination_slug",
        "destination_namespace": "destination_path",
        "parent_id": null,
        "namespace_id": 1,
        "project_id": null,
        "created_at": "2021-06-18T09:47:37.390Z",
        "updated_at": "2021-06-18T09:47:51.867Z",
        "failures": []
    },
    {
        "id": 2,
        "bulk_import_id": 2,
        "status": "failed",
        "source_full_path": "another_group",
        "destination_slug": "another_slug",
        "destination_namespace": "another_namespace",
        "parent_id": null,
        "namespace_id": null,
        "project_id": null,
        "created_at": "2021-06-24T10:40:20.110Z",
        "updated_at": "2021-06-24T10:40:46.590Z",
        "failures": [
            {
                "relation": "group",
                "step": "extractor",
                "exception_message": "Error!",
                "exception_class": "Exception",
                "correlation_id_value": "dfcf583058ed4508e4c7c617bd7f0edd",
                "created_at": "2021-06-24T10:40:46.495Z",
                "pipeline_class": "BulkImports::Groups::Pipelines::GroupPipeline",
                "pipeline_step": "extractor"
            }
        ]
    }
]

グループまたはプロジェクトのマイグレーション詳細の取得

GET /bulk_imports/:id
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/bulk_imports/1"
{
  "id": 1,
  "status": "finished",
  "source_type": "gitlab",
  "created_at": "2021-06-18T09:45:55.358Z",
  "updated_at": "2021-06-18T09:46:27.003Z"
}

グループまたはプロジェクトのマイグレーションエンティティの一覧表示

GET /bulk_imports/:id/entities
属性種類必須説明
per_page整数。いいえページごとに返すレコード数。
page整数。いいえ取得するPages。
sort文字列です。いいえ asc 、またはdesc 作成日順に descソートされたレコードを返しますdesc 。デフォルトは desc
status文字列です。いいえインポートステータス。

ステータスは以下のいずれかになります:

  • created
  • started
  • finished
  • failed
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/bulk_imports/1/entities?per_page=2&page=1&status=finished"
[
    {
        "id": 1,
        "status": "finished",
        "source_type": "gitlab",
        "created_at": "2021-06-18T09:45:55.358Z",
        "updated_at": "2021-06-18T09:46:27.003Z"
    }
]

グループまたはプロジェクトのマイグレーションエンティティの詳細を取得します。

GET /bulk_imports/:id/entities/:entity_id
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/bulk_imports/1/entities/2"
{
  "id": 1,
  "status": "finished",
  "source_type": "gitlab",
  "created_at": "2021-06-18T09:45:55.358Z",
  "updated_at": "2021-06-18T09:46:27.003Z"
}