グループ Import/Export API
GitLab 12.8で導入されました。
グループのインポート/エクスポートを使用すると、グループ構造をエクスポートし、新しい場所にインポートすることができます。プロジェクトのインポート/エクスポートと一緒に使用すると、プロジェクトイシューとグループエピック間の接続など、グループレベルのリレーションシップの接続を保持することができます。
グループ輸出は以下の通り:
- グループのマイルストーン
- グループボード
- グループラベル
- グループバッジ
- グループメンバー
- サブグループ:各サブグループには上記のすべてのデータが含まれます。
新規輸出のスケジュール
新しいグループExportを開始します。
POST /groups/:id/export
属性 | タイプ | 必須 | 説明 |
---|---|---|---|
id
| 整数/文字列 | はい | 認証されたユーザーが所有するグループのID |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/export"
{
"message": "202 Accepted"
}
輸出ダウンロード
完成したexporterをダウンロードしてください。
GET /groups/:id/export/download
属性 | タイプ | 必須 | 説明 |
---|---|---|---|
id
| 整数/文字列 | はい | 認証されたユーザーが所有するグループのID |
curl --header "PRIVATE-TOKEN: <your_access_token>" --remote-header-name --remote-name "https://gitlab.example.com/api/v4/groups/1/export/download"
ls *export.tar.gz
2020-12-05_22-11-148_namespace_export.tar.gz
グループのエクスポートにかかる時間は、グループのサイズによって異なる場合があります。 このエンドポイントは、以下のいずれかを返します:
- エクスポートされたアーカイブ(利用可能な場合)
- 404メッセージ
ファイルのインポート
POST /groups/import
属性 | タイプ | 必須 | 説明 |
---|---|---|---|
name
| 列 | はい | インポートするグループ名 |
path
| 列 | はい | 新しいグループの名前とパス |
file
| 列 | はい | アップロードするファイル |
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"
max_import_size
オプションを使用します。重要な注意事項
以下に注意してください。
- インポートしたプロジェクトのグループレベルのリレーションシップを維持するには、まずグループのインポート/エクスポートを実行し、目的のグループ構造にプロジェクトをインポートできるようにします。
- インポートされたグループは、親グループにインポートされない限り、
private
の可視レベルが与えられます。 - 親グループにインポートされた場合、特別な制限がない限り、サブグループも同様のレベルの可視性を継承します。
- インポートしたグループのメンバー リストとそれぞれの権限を保持するには、これらのグループのユーザーをレビュアーします。 必要なグループをインポートする前に、これらのユーザーが存在することを確認してください。