파일 내보내기를 사용하여 프로젝트 및 그룹 이전하기

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

직접 전송을 사용하여 그룹 및 프로젝트를 이전하는 것이 권장됩니다. 그러나 일부 상황에서는 파일 내보내기를 사용하여 그룹 및 프로젝트를 이전해야 할 수도 있습니다.

내보낸 파일을 업로드하여 프로젝트 이전하기

Self-Managed형 GitLab 인스턴스나 GitLab.com의 기존 프로젝트를 내보내 파일로 내보낸 다음 다른 GitLab 인스턴스로 가져올 수 있습니다.

사용자 기여 보존

사용자 기여를 보존하려면 GitLab.com 또는 GitLab Self-Managed형 인스턴스로 이전하는지에 따라 요구사항이 달라집니다.

GitLab Self-Managed형에서 GitLab.com으로 이전하는 경우

파일 내보내기를 사용하여 프로젝트를 이전할 때, 사용자 기여를 올바르게 매핑하려면 관리자 액세스 토큰이 필요합니다.

따라서 Self-Managed형 인스턴스에서 GitLab.com으로 파일 내보내기를 가져오면 사용자 기여가 올바르게 매핑되지 않습니다. 대신, 모든 GitLab 사용자 관련성 (예: 코멘트 작성자)이 프로젝트를 가져오는 사용자로 변경됩니다. 기여 이력을 보존하려면 다음 중 하나를 수행하세요:

GitLab Self-Managed형로 이전하는 경우

GitLab이 사용자와 사용자의 기여를 올바르게 매핑하려면 다음을 수행해야 합니다:

  • 프로젝트 최상위 그룹의 소유자는 모든 멤버(직접 및 상속)의 정보를 내보내 파일에 포함시킬 수 있도록 프로젝트를 내보내 파일로 내보내야 합니다. 프로젝트 유지자 및 소유자는 프로젝트 내보내를 시작할 수 있지만, 그 후에는 직접 멤버만 내보냅니다.
  • 관리자가 가져오기를 수행해야 합니다.
  • 필요한 사용자는 대상 GitLab 인스턴스에 존재해야 합니다. 관리자는 레일 콘솔에서 대량으로 확인된 사용자를 생성하거나 UI에서 하나씩 만들 수 있습니다.
  • 사용자는 출처 GitLab 인스턴스에서 대상 GitLab 인스턴스의 주 이메일 주소와 일치하는 프로필에 공개 이메일을 설정해야 합니다. 또한 사용자의 공개 이메일을 프로젝트 내보내 파일을 편집하여 매뉴얼으로 추가할 수도 있습니다.

기존 사용자의 이메일이 가져오는 사용자의 이메일과 일치하는 경우, 해당 사용자는 가져온 프로젝트의 직접 멤버로 추가됩니다.

이전 조건 중 하나라도 충족되지 않으면 사용자 기여가 올바르게 매핑되지 않습니다. 대신, 모든 GitLab 사용자 관련성이 가져오기를 수행한 사용자로 변경됩니다. 이 사용자는 다른 사용자가 만든 Merge Request의 작성자가 됩니다. 원래 작성자를 언급하는 보조 코멘트는 다음을 포함합니다:

  • 코멘트, Merge Request 승인, 연결된 작업 및 항목에 대한 추가
  • Merge Request 또는 이슈 생성자, 추가 또는 제거된 레이블 및 Merge된 정보에 대한 추가

프로젝트 내보내 파일 편집하기

내보내 파일에서 데이터를 추가하거나 제거할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다:

  • project_members.ndjson 파일에 매뉴얼으로 사용자 공개 이메일 추가
  • ci_pipelines.ndjson 파일에서 트림 CI 파이프라인

프로젝트 내보내 파일을 편집하려면:

  1. 내보낸 .tar.gz 파일을 추출합니다.
  2. 적절한 파일(예: tree/project/project_members.ndjson)을 편집합니다.
  3. 파일을 .tar.gz 파일로 다시 압축합니다.

또한 project_members.ndjson 파일을 확인하여 모든 멤버가 내보내졌는지 확인할 수 있습니다.

호환성

  • JSON 형식 프로젝트 파일 내보내 제거되었습니다. (GitLab 15.11에서 제거)

프로젝트 파일 내보내는 NDJSON 형식입니다.

최대 두 마이너 버전 전까지 GitLab에서 내보내 파일을 가져올 수 있습니다.

예를 들어:

대상 버전 호환되는 소스 버전
13.0 13.0, 12.10, 12.9
13.1 13.1, 13.0, 12.10

내보내 파일을 가져오는 소스로 파일 내보내 구성하기

Tier: Free, Premium, Ultimate Offering: Self-Managed, GitLab Dedicated

파일 내보내를 사용하여 Self-Managed형 GitLab 인스턴스에서 프로젝트를 이전하려면 GitLab 관리자는 다음을 수행해야 합니다:

  1. 원본 인스턴스에서 파일 내보내를 활성화합니다.
  2. 대상 인스턴스에서 가져오하기 루트로서 파일 내보내를 활성화합니다. GitLab.com의 경우 파일 내보내는 이미 가져오기 루트로서 활성화되어 있습니다.

대상 인스턴스에서 파일 내보내를 가져오는 소스로 구성하려면:

  1. 왼쪽 사이드바에서 아래쪽에서 관리자 영역을 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가져오기 및 내보내 설정을 확장합니다.
  4. 가져오기 소스로 이동합니다.
  5. GitLab 내보내 확인란을 선택합니다.

CE와 EE 간

Community Edition에서 Enterprise Edition으로 프로젝트를 내보내거나 그 반대로 내보낼 수 있습니다. 호환성이 충족되는 경우입니다.

Enterprise Edition에서 Community Edition으로 프로젝트를 내보낼 경우, Enterprise Edition에만 유지되는 데이터가 손실될 수 있습니다. 자세한 내용은 EE에서 CE로 다운그레이드를 참조하세요.

프로젝트 및 데이터 내보내기

프로젝트를 가져오려면 먼저 내보내해야 합니다.

전제 조건:

  • 내보내는 항목 디렉터리을 검토하세요. 모든 항목이 내보내지는 않습니다.
  • 프로젝트에 적어도 관리자 역할이 있어야 합니다.

프로젝트와 데이터를 내보내려면 다음 단계를 따르세요:

  1. 왼쪽 사이드바에서 검색 또는 이동하여 찾기를 선택하여 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 고급을 확장합니다.
  4. 프로젝트 내보내를 선택합니다.
  5. 내보내가 생성된 후에는 다음을 수행할 수 있습니다:
    • 받아야 할 이메일에 포함된 링크를 따릅니다.
    • 프로젝트 설정 페이지를 새로 고침하고 프로젝트 내보내 다운로드를 선택합니다.

내보내는 구성된 shared_path에서 생성되며, 임시 공유 디렉터리에서 생성된 다음 구성된 uploads_directory로 이동합니다. 24시간마다 워커가 이러한 내보내 파일을 삭제합니다.

내보내지는 프로젝트 항목

내보내는 프로젝트 항목은 사용하는 GitLab 버전에 따라 다릅니다. 특정 프로젝트 항목이 내보내지는지 확인하려면:

  1. exporters 배열을 확인합니다.
  2. 사용 중인 GitLab 버전에 대한 프로젝트의 project/import_export.yml 파일을 확인합니다. 예를 들어, GitLab 16.8용 https://gitlab.com/gitlab-org/gitlab/-/blob/16-8-stable-ee/lib/gitlab/import_export/project/import_export.yml를 확인합니다.

빠른 개요를 위해 다음이 포함됩니다:

  • 프로젝트 및 위키 리포지터리
  • 프로젝트 업로드
  • 통합을 제외한 프로젝트 구성
  • 이슈
    • 이슈 코멘트
    • 이슈 반복(게시판 15.4에서 도입)
    • 이슈 리소스 상태 이벤트(게시판 15.4에서 도입)
    • 이슈 리소스 마일스톤 이벤트(게시판 15.4에서 도입)
    • 이슈 리소스 반복 이벤트(게시판 15.4에서 도입)
  • Merge Request
    • Merge Request 차이
    • Merge Request 코멘트
    • Merge Request 리소스 상태 이벤트(게시판 15.4에서 도입)
    • Merge Request 다중 담당자(게시판 15.3에서 도입)
    • Merge Request 검토자(게시판 15.3에서 도입)
    • Merge Request 승인자(게시판 15.3에서 도입)
  • 커밋 코멘트(게시판 15.10에서 도입)
  • 레이블
  • 마일스톤
  • 스니펫
  • 릴리스
  • 시간 추적 및 기타 프로젝트 엔터티
  • 디자인 관리 파일 및 데이터
  • LFS 객체
  • 이슈 보드
  • CI/CD 파이프라인 및 파이프라인 스케줄
  • 보호된 브랜치 및 태그
  • 푸시 규칙
  • 이모지 반응
  • 프로젝트 및 상속된 그룹 멤버(내보내 프로젝트 그룹에 관리자 역할을 가진 사용자 또는 관리자인 경우)

내보내지 않는 프로젝트 항목

내보내지 않는 항목은 다음과 같습니다:

  • 하위 파이프라인 히스토리
  • 파이프라인 트리거
  • 빌드 추적 및 아티팩트
  • 패키지 및 컨테이너 레지스트리 이미지
  • CI/CD 변수
  • 웹훅
  • 모든 암호화된 토큰
  • 필요한 승인 횟수
  • 리포지터리 크기 제한
  • 보호된 브랜치로 푸시할 수 있는 배포 키
  • 보안 파일
  • Git 관련 이벤트의 활동 로그 (예: 푸시 및 태그 생성)
  • 프로젝트와 관련된 보안 정책
  • 이슈 간 및 관련된 항목 간의 링크
  • 관련 Merge Request에 대한 링크

파일 내보내기를 사용하여 프로젝트를 마이그레이션하면 그룹인스턴스 수준에서 템플릿을 사용하여 프로젝트를 생성하는 것과 동일한 내보내기 및 가져오기 메커니즘이 사용됩니다. 따라서 내보낸 항목 디렉터리은 동일합니다.

프로젝트 및 해당 데이터 가져오기

프로젝트 및 해당 데이터를 가져올 수 있습니다. 가져올 수 있는 데이터 양은 최대 가져오기 파일 크기에 따라 달라집니다:

caution
신뢰할 수 있는 소스에서만 프로젝트를 가져오십시오. 신뢰할 수 없는 소스에서 프로젝트를 가져오면 민감한 데이터가 유출될 수 있습니다.

사전 요구 사항

  • GitLab 16.0에 도입된 Maintainer 역할 요구 사항 및 GitLab 15.11.1 및 GitLab 15.10.5에 백포트되었습니다.
  • 프로젝트 및 해당 데이터를 내보냈어야 합니다.
  • GitLab 버전을 비교하고 내보낸 GitLab 버전과 동일하거나 그보다 나중에 가져오도록 합니다.
  • 잠재적인 문제에 대한 호환성을 검토합니다.
  • 대상 그룹에서 최소한 Maintainer 역할이 필요합니다.

프로젝트 가져오기

다음을 수행하여 프로젝트를 가져올 수 있습니다:

  1. 왼쪽 사이드바의 맨 위에서 새로 만들기 () 및 새 프로젝트/리포지터리를 선택합니다.
  2. 프로젝트 가져오기를 선택합니다.
  3. 프로젝트 가져올 위치에서 GitLab 내보내기를 선택합니다.
  4. 프로젝트 이름과 URL을 입력합니다. 그런 다음 이전에 내보낸 파일을 선택합니다.
  5. 프로젝트 가져오기를 선택합니다.

API를 사용하여 가져오기 상태를 조회할 수 있습니다. 조회 결과로 가져오기 오류 또는 예외가 반환될 수 있습니다.

가져온 항목의 변경사항

내보낸 항목은 다음과 같이 가져오기되는데 변경됩니다:

  • 소유자 역할을 가진 프로젝트 구성원은 Maintainer 역할로 가져오집니다.
  • 가져온 프로젝트에 fork에서 비롯된 Merge Request이 포함되어 있으면, 해당 Merge Request과 관련된 새로운 브랜치가 프로젝트에 생성됩니다. 따라서 새로운 프로젝트의 브랜치 수는 소스 프로젝트보다 많을 수 있습니다.
  • Internal 가시성 수준이 제한됨인 경우, 모든 가져온 프로젝트에 Private 가시성이 부여됩니다.

배포 키는 가져오지 않습니다. 배포 키를 사용하려면 가져온 프로젝트에서 이를 활성화하고 보호된 브랜치를 업데이트해야 합니다.

대형 프로젝트 가져오기

Tier: Free, Premium, Ultimate Offering: Self-Managed, GitLab Dedicated

대형 프로젝트가 있는 경우 Rake 작업을 사용하는 것을 고려해보세요.

최대 가져오기 파일 크기 설정

Tier: Free, Premium, Ultimate Offering: Self-Managed, GitLab Dedicated

관리자는 최대 가져오기 파일 크기를 다음 중 하나의 방법으로 설정할 수 있습니다:

기본값은 0(무제한)입니다.

요율 제한

오용을 방지하기 위해 기본적으로 사용자는 다음과 같이 요율이 제한됩니다:

요청 유형 제한
내보내기 분당 6개 프로젝트
내보내기 다운로드 분당 그룹당 1회 다운로드
가져오기 분당 6개 프로젝트

내보낸 파일을 업로드하여 그룹 마이그레이션 (사용하지 않는 방법)

caution
이 기능은 GitLab 14.6에서 사용되지 않는 방법으로 지정되었으며 직접 전송에 의한 그룹 마이그레이션으로 대체되었습니다. 그러나 이 기능은 오프라인 시스템 간 그룹 마이그레이션을 위해 여전히 권장됩니다. 오프라인 환경에 대한 대안 솔루션 진행 상황을 확인하려면 관련 epic을 참조하세요.

사전 요구 사항:

  • 마이그레이션할 그룹에서 소유자 역할이 있어야 합니다.

파일 내보내기를 사용하여 다음을 수행할 수 있습니다:

  • 그룹을 파일로 내보내고 해당 파일을 다른 GitLab 인스턴스 또는 동일 인스턴스의 다른 위치로 업로드할 수 있습니다.
  • GitLab UI 또는 API를 사용할 수 있습니다.
  • 그룹별로 순차적으로 마이그레이션하고, 각 그룹의 프로젝트를 하나씩 내보내고 가져올 수 있습니다.

관리자 액세스 토큰을 사용하여 가져오기를 수행하는 경우 GitLab은 사용자 기여를 정확하게 매핑합니다. 그러나 Self-Managed형 인스턴스에서 GitLab.com으로 가져오는 경우 사용자 기여가 올바르게 매핑되지 않습니다. 올바르게 매핑하려면 Self-Managed형 인스턴스에서 GitLab.com으로 가져올 때 프로페셔널 서비스 팀의 유료 참여를 보호해야 합니다.

추가 정보

  • 내보낸 파일은 특정 워커에 의해 매일 24시간마다 삭제되는 임시 디렉터리에 저장됩니다.
  • 가져온 프로젝트로부터 그룹 수준 관계를 유지하기 위해 먼저 그룹을 내보내고 가져와야 합니다.
  • 가져온 그룹은 커뮤니티 에디션에서 엔터프라이즈 에디션 또는 그 반대로 내보낼 수 있습니다. 엔터프라이즈 에디션은 커뮤니티 에디션에 포함되지 않는 그룹 데이터를 유지합니다. 따라서 엔터프라이즈 에디션에서 커뮤니티 에디션으로 그룹을 내보내는 경우 이러한 데이터를 잃어버릴 수 있습니다. 자세한 내용은 EE에서 CE로 다운그레이드를 참조하세요.

최대 가져오기 파일 크기는 GitLab Self-Managed형 인스턴스 또는 GitLab.com으로 가져오는지에 따라 다릅니다:

  • GitLab Self-Managed형 인스턴스로 가져올 경우 어떤 크기의 가져오기 파일이든 가져올 수 있습니다. 관리자는 다음 중 하나를 사용하여 이 동작을 변경할 수 있습니다:
  • GitLab.com에서 그룹 받기에 5GB까지 크기의 가져오기 파일을 사용할 수 있습니다.

호환성

  • JSON 형식의 프로젝트 파일 내보내기에 대한 지원이 GitLab 15.8에서 제거되었습니다.

그룹 파일 내보내기는 NDJSON 형식입니다.

GitLab의 최대 마이너 버전의 두 가지 이전까지 내보내진 GitLab 버전에서 내보내기된 그룹 파일을 가져올 수 있습니다.

예를 들어:

대상 버전 호환되는 소스 버전
13.0 13.0, 12.10, 12.9
13.1 13.1, 13.0, 12.10

내보낸 그룹 항목들 그룹

import_export.yml 파일은 파일 내보내기를 사용하여 그룹을 마이그레이션할 때 내보내고 가져오는 항목을 나열합니다. 대상 GitLab 인스턴스로 가져올 수 있는 항목을 확인하려면 GitLab 버전에 따른 브랜치에서 이 파일을 확인하세요. 예를 들어, 16-8-stable-ee 브랜치import_export.yml을 확인하세요.

내보낸 그룹 항목은 다음과 같습니다:

  • 마일스톤
  • 그룹 라벨 (관련 라벨 우선 순위 없음)
  • 보드 및 보드 디렉터리
  • 뱃지
  • 하위 그룹 (상기한 모든 데이터 포함)
  • 에픽
  • 이벤트
  • 위키
  • 이터레이션 주기. GitLab 15.4에서 도입.

내보내지 않는 그룹 항목들

내보내지 않는 항목은 다음과 같습니다:

  • 프로젝트
  • 러너 토큰
  • SAML 디스커버리 토큰
  • 업로드

준비

  • 가져온 그룹에서 멤버 디렉터리과 그들의 권한을 보존하려면 해당 그룹의 사용자를 확인하세요. 원하는 그룹을 가져오기 전에 반드시 이 사용자들이 존재하는지 확인하세요.
  • 사용자는 소스 GitLab 인스턴스에서 공개 이메일을 설정해야 하며, 이메일 주소는 대상 GitLab 인스턴스에서 확인된 기본 이메일과 일치해야 합니다. 대부분의 사용자는 이메일 주소 확인을 요청하는 이메일을 받습니다.

그룹을 내보내기 위해 활성화

사전 요구 사항:

  • 그룹의 소유자 역할을 가져야 합니다.

그룹을 내보내기 위해 활성화하는 방법:

  1. 좌측 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가져오기 및 내보내기 설정을 확장합니다.
  4. 가져오기 소스 섹션에서 GitLab 내보내기 확인란을 선택합니다.

그룹 내보내기

사전 요구 사항:

  • 그룹의 소유자 역할을 가져야 합니다.

그룹 내용을 내보내려면:

  1. 좌측 사이드바에서 검색 또는 이동하여 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 고급 섹션에서 그룹 내보내기를 선택합니다.
  4. 내보내기가 생성된 후, 다음을 수행할 수 있습니다:
    • 이메일에 포함된 링크를 따릅니다.
    • 그룹 설정 페이지를 새로 고치고 프로젝트 내보내기 영역에서 내보내기 다운로드를 선택합니다.

그룹 가져오기

그룹을 가져오려면:

  1. 좌측 사이드바에서 맨 위에서 새로 만들기 ()을 선택하고 새로 만들기를 선택합니다.
  2. 그룹 가져오기를 선택합니다.
  3. 파일에서 그룹 가져오기 섹션에서 그룹 이름을 입력하고 연관된 그룹 URL을 승인하거나 수정합니다.
  4. 파일 선택을 선택합니다.
  5. 가져오려는 GitLab 내보내기 파일을 선택합니다.
  6. 가져오기를 시작하려면 가져오기를 선택합니다.

요청 제한

남용을 방지하기 위해 사용자의 기본 제한은 다음과 같습니다:

요청 유형 제한
내보내기 분당 6개 그룹
내보내기 다운로드 그룹당 분당 1회 다운로드
가져오기 분당 6개 그룹

관련 주제