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

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

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

내보낸 파일을 업로드하여 프로젝트 마이그레이션

자체 관리형 GitLab 인스턴스 또는 GitLab.com의 기존 프로젝트를 파일로 내보내고 다른 GitLab 인스턴스로 가져올 수 있습니다.

사용자 기여 보존

사용자 기여를 보존하기 위한 요구 사항은 GitLab.com으로 마이그레이션하느냐, 자체 관리형 GitLab 인스턴스로 마이그레이션하느냐에 따라 다릅니다.

자체 관리형 GitLab에서 GitLab.com으로 마이그레이션하는 경우

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

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

GitLab 자체 관리형으로 마이그레이션하는 경우

GitLab이 사용자와 사용자의 기여를 올바르게 매핑하도록 하려면:

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

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

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

  • 코멘트, 병합 요청 승인, 연결된 작업 및 항목에 대해 추가됨.
  • 병합 요청이나 이슈 생성자, 추가 또는 제거된 라벨, 병합한 사용자에 대해 추가되지 않음.

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

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

  • 사용자의 공개 이메일을 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

파일 내보내기를 사용하여 자체 관리형 GitLab 인스턴스의 프로젝트를 마이그레이션하려면 GitLab 관리자는 다음을 수행해야 합니다:

  1. 출발지 인스턴스에서 파일 내보내기를 활성화합니다.
  2. 대상 인스턴스에 대한 가져오기 소스로 파일 내보내기를 활성화합니다. GitLab.com에서는 파일 내보내기가 이미 가져오기 소스로 활성화되어 있습니다.

대상 인스턴스에 대한 가져오기 소스로 파일 내보내기를 활성화하려면:

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

CE와 EE 간

커뮤니티 에디션에서 엔터프라이즈 에디션으로 프로젝트를 내보내거나 그 반대로 할 수 있습니다. 이는 호환성이 충족된다는 가정 아래에서 가능합니다.

엔터프라이즈 에디션에서 프로젝트를 커뮤니티 에디션으로 내보낼 때, 엔터프라이즈 에디션에만 유지되는 데이터가 손실될 수 있습니다. 자세한 정보는 EE에서 CE로 다운그레이드를 참조하세요.

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

프로젝트를 가져오기 위해서는 먼저 프로젝트를 내보내야 합니다.

사전 요구 사항:

  • 내보내지는 항목 목록을 검토하세요. 모든 항목이 내보내지는 것은 아닙니다.
  • 해당 프로젝트에 적어도 Maintainer 역할이 있어야 합니다.

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

  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을 확인하세요.

간략한 개요를 위해서 다음이 내보내지는 항목에 포함됩니다:

  • 프로젝트 및 위키 저장소
  • 프로젝트 업로드
  • 통합을 제외한 프로젝트 구성
  • 이슈
    • 이슈 댓글
    • 이슈 이터레이션 (GitLab 15.4에서 도입)
    • 이슈 리소스 상태 이벤트 (GitLab 15.4에서 도입)
    • 이슈 리소스 마일스톤 이벤트 (GitLab 15.4에서 도입)
    • 이슈 리소스 이터레이션 이벤트 (GitLab 15.4에서 도입)
  • 병합 요청
    • 병합 요청 차이
    • 병합 요청 댓글
    • 병합 요청 리소스 상태 이벤트 (GitLab 15.4에서 도입)
    • 병합 요청 다중 담당자 (GitLab 15.3에서 도입)
    • 병합 요청 리뷰어 (GitLab 15.3에서 도입)
    • 병합 요청 승인자 (GitLab 15.3에서 도입)
  • 커밋 댓글 (GitLab 15.10에서 도입)
  • 레이블
  • 마일스톤
  • 스니펫
  • 릴리스
  • 시간 추적 및 기타 프로젝트 엔터티
  • 디자인 관리 파일 및 데이터
  • LFS 오브젝트
  • 이슈 보드
  • CI/CD 파이프라인 및 파이프라인 일정
  • 보호된 브랜치 및 태그
  • 푸시 규칙
  • 이모지 반응
  • 프로젝트 및 상속된 그룹 멤버, 단 해당 사용자가 내보내기된 프로젝트 그룹에서 Maintainer 역할을 가지거나 관리자인 경우에 한함

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

내보내지 않는 항목은 다음을 포함합니다:

  • 자식 파이프라인 히스토리
  • 파이프라인 트리거
  • 빌드 추적 및 아티팩트
  • 패키지 및 컨테이너 레지스트리 이미지
  • CI/CD 변수
  • 웹훅
  • 암호화된 토큰
  • 필요한 승인 수 (관련)
  • 저장소 크기 제한
  • 보호된 브랜치로 푸시할 수 있는 배포 키
  • 보안 파일
  • Git 관련 이벤트의 활동 로그 (예를 들어, 태그 만들기 및 푸시)
  • 프로젝트와 관련된 보안 정책
  • 이슈 간 및 연결된 항목 간의 링크
  • 관련 병합 요청 링크

파일 내보내기를 사용하여 프로젝트를 이전하는 경우 groupinstance 수준에서 템플릿을 사용하여 프로젝트를 생성하는 것과 같은 내보내기 및 가져오기 메커니즘을 사용합니다. 따라서 내보내는 항목 목록은 동일합니다.

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

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

경고: 신뢰할 수 있는 소스에서만 프로젝트를 가져오십시오. 신뢰할 수 없는 소스에서 프로젝트를 가져 올 경우, 공격자가 민감한 데이터를 훔칠 수 있습니다.

사전 조건

  • GitLab 16.0에서 도입된 Maintainer 역할의 요구사항이며, GitLab 15.11.1 및 GitLab 15.10.5로 백포트되었습니다.
  • 프로젝트 및 해당 데이터 내보내기가 되어 있어야 합니다.
  • GitLab 버전을 비교하고 가져올 GitLab 버전이 내보내기한 GitLab 버전과 동일하거나 그 이후 버전인지 확인하십시오.
  • 어떠한 문제에 대해서는 호환성을 확인하십시오.
  • 마이그레이션할 대상 그룹에서 적어도 Maintainer 역할이 있어야 합니다.

프로젝트 가져오기

프로젝트를 가져오려면:

  1. 왼쪽 사이드바의 상단에서 새로 만들기 () 및 새 프로젝트/저장소를 선택하십시오.
  2. 프로젝트 가져오기를 선택하십시오.
  3. 프로젝트 가져오기에서, GitLab 내보내기를 선택하십시오.
  4. 프로젝트 이름과 URL을 입력하고 이전에 내보낸 파일을 선택하십시오.
  5. 프로젝트 가져오기를 선택하십시오.

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

가져온 항목에 대한 변경 사항

내보낸 항목은 다음과 같이 가져오기됩니다:

  • 소유자 역할을 갖는 프로젝트 구성원은 Maintainer 역할로 가져오게 됩니다.
  • 가져온 프로젝트에 fork에서 유래한 병합 요청이 포함되어 있다면, 해당 병합 요청과 연결된 새 브랜치가 프로젝트에 생성됩니다. 따라서, 새 프로젝트의 브랜치 수가 소스 프로젝트보다 많을 수 있습니다.
  • 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개 프로젝트

파일 가져오기를 통한 그룹 마이그레이션 (사용 중지)

경고: 이 기능은 GitLab 14.6에서 사용 중지되었으며, 직접 이전을 통한 그룹 마이그레이션으로 대체되었습니다. 그러나 이 기능은 여전히 오프라인 시스템 간에 그룹을 마이그레이션하는 데 권장됩니다. 오프라인 환경에 대한 대체 솔루션의 진행상황을 따르려면 해당 에픽을 참조하십시오.

사전 조건:

  • 마이그레이션할 그룹에서 소유자 역할을 할 것.

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

  • 어떤 그룹이든 파일로 내보내고 해당 파일을 다른 GitLab 인스턴스로 또는 동일한 인스턴스의 다른 위치로 업로드합니다.
  • GitLab UI 또는 API를 사용할 수 있습니다.
  • 각각의 그룹을 하나씩 마이그레이션한 후에 각각의 그룹에 대해 프로젝트를 하나씩 내보내고 가져오기할 수 있습니다.

관리자 액세스 토큰을 사용하여 가져오하기를 수행한 경우, GitLab은 사용자의 기여를 올바르게 매핑합니다. 그러나 자체 관리 인스턴스에서 GitLab.com으로 가져올 때, 사용자 기여를 올바르게 매핑하지 않습니다. 올바른 사용자 기여 매핑을 위해서는 자체 관리 인스턴스에서 GitLab.com으로 가져올 때 전문 서비스팀의 유료 참여로 보존할 수 있습니다.

추가 정보

  • 내보내기는 임시 디렉토리에 저장되며 특정 작업자에 의해 24시간마다 삭제됩니다.
  • 가져온 프로젝트에서 그룹 수준의 관계를 유지하려면 먼저 가져오고 가져온 그룹에서 프로젝트를 원하는 그룹 구조로 가져올 수 있도록 합니다.
  • 가져온 그룹은 private 가시성 수준으로 지정됩니다. 부모 그룹으로 가져오는 경우에는 다르게 제한하지 않는 한 하위 그룹도 동일한 가시성 수준을 상속합니다.
  • 커뮤니티 에디션에서 엔터프라이즈 에디션으로 그룹을 내보내고 그 반대도 가능합니다. 엔터프라이즈 에디션에는 커뮤니티 에디션에 포함되지 않는 일부 그룹 데이터가 유지됩니다. 엔터프라이즈 에디션에서 그룹을 커뮤니티 에디션으로 내보내는 경우에는 이 데이터가 손실될 수 있습니다. 자세한 정보는 EE에서 CE로 다운그레이드를 참조하세요.

최대 가져오기 파일 크기는 GitLab 자체 관리 인스턴스 또는 GitLab.com에 가져 오늘지에 따라 달라집니다.

  • GitLab 자체 관리 인스턴스로 가져오는 경우, 가져오기 파일의 크기는 관계없이 가져올 수 있습니다. 관리자는 다음을 사용하여이 동작을 변경할 수 있습니다.
  • GitLab.com에서는 최대 5 GB 크기의 가져오기 파일을 사용하여 그룹을 가져올 수 있습니다.

호환성

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

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 인스턴스에서 확인 된 기본 이메일과 일치하는 공개 이메일을 설정해야합니다. 대부분의 사용자는 이메일을 확인하라는 메일을 받게됩니다.

그룹의 내보내기 활성화

전제 조건:

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

그룹의 내보내기를 활성화하려면:

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

그룹의 내보내기

전제 조건:

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

그룹 내용을 내보내려면:

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

그룹 가져오기

그룹을 가져오려면:

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

요금 한도

남용을 피하기 위해, 기본적으로 사용자의 요금은 다음과 같이 제한됩니다:

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

관련 주제