리포지터리 미러링

자세한 정보: Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

외부 소스로부터 및 외부 소스로 리포지터리를 미러 할 수 있습니다. 소스를 지정할 수 있습니다. 브랜치, 태그 및 커밋이 자동으로 동기화됩니다.

note
SCP 스타일 URL은 지원되지 않습니다. 그러나 SCP 스타일 URL을 구현하는 작업은 이 이슈에서 추적됩니다. 진행 상황을 확인하려면 해당 이슈를 구독하세요.

여러 미러링 방법이 있습니다:

  • 푸시: GitLab에서 리포지터리를 다른 위치로 미러링합니다.
  • : 다른 위치의 리포지터리를 GitLab Premium 인스턴스로 미러링합니다.
  • 양방향 미러링도 가능하지만 충돌을 일으킬 수 있습니다.

프로젝트 미러링이 필요한 경우:

  • 프로젝트의 정식 버전이 GitLab으로 이전되었습니다. 이전 위치에서 프로젝트의 사본을 제공하려면 GitLab 리포지터리를 푸시 미러로 구성하세요. GitLab 리포지터리에 가하는 변경 사항은 이전 위치로 복사됩니다.
  • GitLab 인스턴스가 비공개이지만 일부 프로젝트를 오픈 소스로 공개하고 싶을 때
  • GitLab로 마이그레이션 했지만 프로젝트의 정식 버전이 다른 곳에 있는 경우. GitLab 리포지터리를 다른 프로젝트의 풀 미러로 구성하세요. GitLab 리포지터리가 프로젝트의 커밋, 태그 및 브랜치의 사본을 가져와 사용할 수 있게 됩니다.

리포지터리 미러 생성

사전 요구 조건:

  • 프로젝트에 대해 적어도 Maintainer 역할이 있어야 합니다.
  • 미러가 ssh://로 연결되는 경우, 호스트 키가 서버에서 감지될 수 있어야 하거나 로컬에 키의 사본이 있어야 합니다.
  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 리포지터리를 선택합니다.
  3. 리포지터리 미러링을 확장합니다.
  4. 새로 추가를 선택합니다.
  5. Git 리포지터리 URL을 입력합니다. 보안 상의 이유로, 원본 리포지터리의 URL은 Maintainer 역할을 가진 사용자나 미러링된 프로젝트의 소유자 역할을 가진 사용자에게만 표시됩니다.
  6. 미러 방향을 선택합니다.
  7. ssh:// URL을 입력한 경우, 다음 중 하나를 선택합니다.
    • 호스트 키 검색: GitLab이 서버로부터 호스트 키를 가져와 지문을 표시합니다.
    • 호스트 키 매뉴얼으로 입력을 선택하고 SSH 호스트 키를 입력합니다.

    리포지터리 미러링 시, GitLab은 연결하기 전에 저장된 호스트 키 중 적어도 하나가 일치함을 확인합니다. 이 체크는 해킹된 코드 주입 또는 비밀번호 도난으로부터 미러를 보호할 수 있습니다.

  8. 인증 방법을 선택합니다. 자세한 내용은 미러용 인증 방법을 참조하세요.
  9. SSH 호스트 키로 인증하는 경우, 올바르게 호스트 키를 확인하세요.
  10. 브랜치가 이탈된 refs에 대한 강제 푸시를 방지하려면, 이탈된 refs 유지를 선택합니다.
  11. 선택 사항. 미러링되는 브랜치의 수를 제한하려면 미러링될 브랜치만 보호를 선택하거나 특정 브랜치 미러링에 정규식을 입력합니다.
  12. 리포지터리 미러링을 선택합니다.

인증 방법으로 SSH 공개 키를 선택한 경우, GitLab이 GitLab 리포지터리를 위해 공개 키를 생성합니다. 이 키를 비-GitLab 서버에 제공해야 합니다. 자세한 내용은 SSH 공개 키 가져오기를 참조하세요.

보호된 브랜치만 미러링

미러링 프로젝트의 보호된 브랜치만을 미러링할지 여부를 선택할 수 있으며, 풀 미러링의 경우 미러링 프로젝트의 보호되지 않은 브랜치는 미러링되지 않고 이탈될 수 있습니다.

이 옵션을 사용하려면 리포지터리 미러를 생성할 때 보호된 브랜치만 미러링을 선택하세요.

특정 브랜치 미러링

자세한 정보: Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

  • 정규식과 일치하는 브랜치 미러링 옵션은 GitLab 15.8에서 API 도입되었습니다. 기본적으로 비활성화됨. mirror_only_branches_match_regex라는 플래그를 가짐.
  • 프로젝트 설정에 있는 옵션은 GitLab 15.9에서 도입되었습니다.
  • GitLab 16.0에서 기본적으로 활성화되었습니다.
  • GitLab 16.2에서 일반 사용 가능해졌습니다. mirror_only_branches_match_regex 피처 플래그가 제거됨.

re2 정규 표현식과 일치하는 이름을 가진 브랜치만 미러링하려면 미러링될 특정 브랜치 필드에 정규식을 입력하세요. 정규식과 일치하지 않는 이름을 가진 브랜치는 미러링되지 않습니다.

미러 업데이트

미러 리포지터리가 업데이트되면 새로운 브랜치, 태그, 커밋이 프로젝트의 활동 피드에 표시됩니다. GitLab의 리포지터리 미러는 자동으로 업데이트됩니다. 매뉴얼으로 업데이트할 수도 있습니다:

  • GitLab.com에서는 5분마다 한 번.
  • Self-Managed 인스턴스에서는 관리자가 설정한 풀 미러링 간격 제한에 따라.
note
GitLab Silent Mode는 푸시 및 풀 업데이트를 비활성화합니다.

강제로 업데이트

미러는 자동으로 업데이트 예정이지만 이미 업데이트 중인 경우나 마지막 업데이트 후 간격(초)에 따른 풀 미러링 제한이 경과하지 않은 경우를 제외하고 즉시 업데이트할 수 있습니다.

사전 요구 사항:

  • 프로젝트에 대해 적어도 Maintainer 역할이 있어야 합니다.
  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 리포지터리를 선택합니다.
  3. 리포지터리 미러링을 확장합니다.
  4. 스크롤하여 미러링된 리포지터리를 찾고 업데이트할 미러를 식별합니다.
  5. 지금 업데이트를 선택합니다 ({재시도}): 리포지터리 미러링 강제 업데이트 사용자 인터페이스

미러용 인증 방법

미러를 생성할 때 해당 인증 방법을 구성해야 합니다. GitLab은 다음과 같은 인증 방법을 지원합니다:

프로젝트 액세스 토큰이나 그룹 액세스 토큰의 경우, 사용자 이름(토큰 이름이 아님)과 비밀번호를 사용합니다.

SSH 인증

SSH 인증은 상호적입니다:

  • 리포지터리에 액세스할 수 있는 권한이 있는지 서버에 증명해야 합니다.
  • 서버가 스스로가 자신이 주장한 대로인지를 당신에게 증명해야 합니다.

SSH 인증에서는 암호나 _공개 키_로 자격 증명을 제공합니다. 다른 리포지터리가 배포 키를 지원할 때 특히, 이 방법은 종종 암호 인증보다 안전합니다.

SSH를 통해 미러링하는 경우, 다음을 사용하여 인증할 수 있습니다:

  • HTTPS를 통해 인증하는 것처럼, 암호 기반 인증
  • 공개 키 인증. 다른 리포지터리가 배포 키를 지원할 때 특히, 이 방법은 종종 암호 인증보다 안전합니다.

SSH 공개 키 가져오기

리포지터리를 미러링하고 SSH 공개 키를 인증 방법으로 선택하는 경우, GitLab은 공개 키를 생성합니다. GitLab 리포지터리와 신뢰 관계를 설정하기 위해 비-GitLab 서버가 이 키를 필요로 합니다. SSH 공개 키를 복사하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 리포지터리를 선택합니다.
  3. 리포지터리 미러링을 확장합니다.
  4. 미러링된 리포지터리로 스크롤합니다.
  5. 올바른 리포지터리를 식별하고 SSH 공개 키 복사를 선택합니다 ().
  6. 다른 리포지터리의 구성에 공개 SSH 키를 추가합니다:
    • 다른 리포지터리가 GitLab에 호스팅되는 경우, 공개 SSH 키를 배포 키로 추가합니다.
    • 다른 리포지터리가 다른 곳에 호스팅되는 경우, 키를 사용자의 authorized_keys 파일에 추가합니다. 전체 공개 SSH 키를 파일에 붙여넣고 개행하여 저장합니다.

필요한 경우 언제든지 키를 변경해야 하는 경우, 미러를 제거하고 다시 추가하여 새 키를 생성할 수 있습니다. 미러를 계속 실행하려면 다른 리포지터리에 새 키를 업데이트합니다.

note
생성된 키는 파일 시스템이 아닌 GitLab 데이터베이스에 저장됩니다. 따라서 미러를 위한 SSH 공개 키 인증은 pre-receive 후크에서 사용할 수 없습니다.

호스트 키 확인

호스트 키를 사용할 때는 항상 지문이 기대한 것과 일치하는지 확인합니다. GitLab.com 및 기타 코드 호스팅 사이트에서는 확인할 수 있도록 지문을 게시합니다:

다른 제공업체는 다를 수 있습니다. 다음 명령을 사용하여 안전하게 키 지문을 수집할 수 있습니다:

  • Self-Managed형 GitLab을 실행합니다.
  • 다른 리포지터리의 서버에 액세스할 수 있습니다.
$ cat /etc/ssh/ssh_host*pub | ssh-keygen -E md5 -l -f -
256 MD5:f4:28:9f:23:99:15:21:1b:bf:ed:1f:8e:a0:76:b2:9d root@example.com (ECDSA)
256 MD5:e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73 root@example.com (ED25519)
2048 MD5:3f:72:be:3d:62:03:5c:62:83:e8:6e:14:34:3a:85:1d root@example.com (RSA)

SSH의 이전 버전은 명령에서 -E md5를 삭제해야 할 수도 있습니다.

관련 주제