그룹 가져오기 및 내보내기 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 그룹 구조를 마이그레이션합니다. 그룹 내보내기에는 다음이 포함됩니다: 가져온 프로젝트에서 그룹 수준 관계를 보존하려면 그룹 내보내기 및 가져오기를 먼저 실행해야 합니다. 이슈 405168로 인해 가져온 그룹은 상위 그룹에 가져오지 않는 한 private 가시성 수준을 갖습니다.
이 API를 사용하여 그룹 구조를 마이그레이션합니다. 이 API를 프로젝트 가져오기 및 내보내기 API와 함께 사용하면 프로젝트 이슈와 그룹 에픽 간의 연결과 같은 그룹 수준 관계를 보존할 수 있습니다.
그룹 내보내기에는 다음이 포함됩니다:
- 그룹 마일스톤
- 그룹 보드
- 그룹 레이블
- 그룹 배지
- 그룹 멤버
- 그룹 이벤트
- 그룹 위키 (Premium 및 Ultimate만 해당)
- 서브그룹. 각 서브그룹은 목록의 모든 이전 데이터를 포함합니다.
가져온 프로젝트에서 그룹 수준 관계를 보존하려면 그룹 내보내기 및 가져오기를 먼저 실행해야 합니다. 이렇게 하면 원하는 그룹 구조로 프로젝트 내보내기를 가져올 수 있습니다.
이슈 405168로 인해 가져온 그룹은 상위 그룹에 가져오지 않는 한 private 가시성 수준을 갖습니다. 기본적으로 그룹을 상위 그룹에 가져오면 서브그룹은 상위 그룹과 동일한 가시성 수준을 상속합니다.
가져온 그룹에서 멤버 목록과 각각의 권한을 보존하려면 이 그룹의 사용자를 검토하세요. 원하는 그룹을 가져오기 전에 이러한 사용자가 존재하는지 확인하세요.
그룹 내보내기 생성#
지정된 그룹에 대한 그룹 내보내기를 생성합니다.
POST /groups/:id/export
| 속성 | 타입 | 필수 | 설명 |
|---|---|---|---|
id |
Integer or string | 예 | 그룹의 ID. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/export"
{
"message": "202 Accepted"
}
그룹 내보내기 다운로드 조회#
지정된 그룹의 내보낸 아카이브를 조회합니다.
GET /groups/:id/export/download
| 속성 | 타입 | 필수 | 설명 |
|---|---|---|---|
id |
Integer or string | 예 | 그룹의 ID. |
group=1
token=secret
curl --request GET \
--header "PRIVATE-TOKEN: ${token}" \
--output download_group_${group}.tar.gz \
--url "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 메시지
그룹 가져오기 생성#
파일을 업로드하여 그룹 가져오기를 생성합니다.
최대 가져오기 파일 크기는 GitLab Self-Managed의 관리자가 설정할 수 있습니다 (기본값은 0 (무제한)).
관리자는 다음 중 하나를 사용하여 최대 가져오기 파일 크기를 수정할 수 있습니다:
- Admin 영역.
- 애플리케이션 설정 API의
max_import_size옵션.
GitLab.com의 최대 가져오기 파일 크기에 대한 자세한 내용은 계정 및 제한 설정을 참조하세요.
POST /groups/import
| 속성 | 타입 | 필수 | 설명 |
|---|---|---|---|
file |
String | 예 | 업로드할 파일. |
name |
String | 예 | 가져올 그룹의 이름. |
path |
String | 예 | 새 그룹의 이름 및 경로. |
parent_id |
Integer | 아니요 | 그룹을 가져올 상위 그룹의 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" \
--url "https://gitlab.example.com/api/v4/groups/import"
