グループインポート・エクスポートAPI

グループのインポート/エクスポート API を使用して、グループ構造をエクスポートし、新しい場所にインポートします。グループのインポート/エクスポート API をプロジェクトのインポート/エクスポート APIと一緒に使用すると、プロジェクトのイシューとグループのエピック間の接続など、グループレベルのリレーションシップを持つ接続を保持できます。

グループのエクスポートには以下が含まれます:

  • グループのマイルストーン
  • グループボード
  • グループラベル
  • グループバッジ
  • グループのメンバー
  • グループWiki
  • サブグループ。各サブグループには上記のすべてのデータが含まれます

インポートしたプロジェクトからグループレベルのリレーションシップを保持するには、まずグループのエクスポートとインポートを実行する必要があります。こうすることで、プロジェクトのエクスポートを目的のグループ構造にインポートすることができます。

既知のイシューのため、親グループにインポートしない限り、インポートされたグループの可視レベルはprivate になります。デフォルトでは、グループを親グループにインポートすると、サブグループは親グループと同じレベルの可視性を継承します。

インポートしたグループのメンバ リストとそれぞれの権限を保持するには、これらのグループのユーザーをレビューします。必要なグループをインポートする前に、これらのユーザーが存在することを確認してください。

前提条件

新しいエクスポートのスケジュール

新しいグループエクスポートを開始します。

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 (無制限))。管理者として、最大インポートファイルサイズを変更することができます:

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"