그룹 가져오기 및 내보내기 API
GitLab v19.5Offering: 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(무제한)).
관리자는 다음 중 한 가지 방법으로 최대 가져오기 파일 크기를 수정할 수 있습니다.
- 관리자 영역에서 수정합니다.
- 애플리케이션 설정 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"