グループインポート・エクスポートAPI
グループのインポート/エクスポート API を使用して、グループ構造をエクスポートし、新しい場所にインポートします。グループのインポート/エクスポート API をプロジェクトのインポート/エクスポート APIと一緒に使用すると、プロジェクトのイシューとグループのエピック間の接続など、グループレベルのリレーションシップを持つ接続を保持できます。
グループのエクスポートには以下が含まれます:
- グループのマイルストーン
- グループボード
- グループラベル
- グループバッジ
- グループのメンバー
- グループWiki
- サブグループ。各サブグループには上記のすべてのデータが含まれます
インポートしたプロジェクトからグループレベルのリレーションシップを保持するには、まずグループのエクスポートとインポートを実行する必要があります。こうすることで、プロジェクトのエクスポートを目的のグループ構造にインポートすることができます。
既知のイシューのため、親グループにインポートしない限り、インポートされたグループの可視レベルはprivate
になります。デフォルトでは、グループを親グループにインポートすると、サブグループは親グループと同じレベルの可視性を継承します。
インポートしたグループのメンバ リストとそれぞれの権限を保持するには、これらのグループのユーザーをレビューします。必要なグループをインポートする前に、これらのユーザーが存在することを確認してください。
前提条件
- グループのインポートおよびエクスポートAPIの前提条件については、エクスポートファイルのアップロードによるグループのマイグレーションの前提条件を参照してください。
新しいエクスポートのスケジュール
新しいグループエクスポートを開始します。
POST /groups/:id/export
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するグループのID |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/export"
{
"message": "202 Accepted"
}
エクスポート・ダウンロード
エクスポートをダウンロードします。
GET /groups/:id/export/download
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するグループのID |
group=1
token=secret
curl --request GET\
--header "PRIVATE-TOKEN: ${token}" \
--output download_group_${group}.tar.gz \
"https://gitlab.example.com/api/v4/groups/${group}/export/download"
ls *export.tar.gz
2020-12-05_22-11-148_namespace_export.tar.gz
グループのエクスポートにかかる時間は、グループのサイズによって異なります。このエンドポイントは、以下のいずれかを返します:
- エクスポートされたアーカイブ (利用可能な場合)
- 404メッセージ
ファイルのインポート
自己管理インスタンスでは、管理者が最大インポートファイルサイズを設定できます(デフォルトは0
(無制限))。管理者として、最大インポートファイルサイズを変更することができます:
- 管理エリアで
-
アプリケーション設定APIの
max_import_size
。
GitLab.comの最大インポートファイルサイズについては、アカウントと制限の設定をご覧ください。
POST /groups/import
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
name | 文字列です。 | yes | インポートするグループ名 |
path | 文字列です。 | yes | 新しいグループの名前とパス |
file | 文字列です。 | yes | アップロードするファイル |
parent_id | 整数。 | いいえ | グループをインポートする親グループのID。指定されていない場合は、現在のユーザーのネームスペースが既定値となります。 |
ファイルシステムからファイルをアップロードするには、--form
引数を使用します。これにより、cURLはヘッダContent-Type: multipart/form-data
を使用してデータをポストします。file=
パラメータはファイルシステム上のファイルを指し、その前に@
を付ける必要があります。例えば
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--form "name=imported-group" --form "path=imported-group" \
--form "file=@/path/to/file" "https://gitlab.example.com/api/v4/groups/import"