리포지토리 미러링
외부 소스로부터 리포지토리를 미러링하거나 외부 소스로 미러링할 수 있습니다. 소스로 사용할 리포지토리를 선택할 수 있습니다. 브랜치, 태그, 커밋은 자동으로 동기화됩니다.
다양한 미러링 방법이 있습니다:
- 푸시: GitLab에서 다른 위치로 리포지토리를 미러링합니다.
- 풀: 다른 위치에서 GitLab 프리미엄 인스턴스로 리포지토리를 미러링합니다.
- 양방향 미러링도 가능하지만 충돌을 일으킬 수 있습니다.
리포지토리를 미러링하는 경우:
- 프로젝트의 정식 버전이 GitLab로 마이그레이션된 경우. 이전 위치에서 프로젝트의 사본을 제공하려면 GitLab 리포지토리를 푸시 미러로 구성하세요. GitLab 리포지토리를 변경하면 해당 변경 사항이 이전 위치로 복사됩니다.
- GitLab 인스턴스가 비공개이지만 일부 프로젝트를 오픈 소스로 공개하고 싶은 경우.
- GitLab으로 마이그레이션했지만 프로젝트의 정식 버전이 다른 곳에 있는 경우. GitLab 리포지토리를 다른 프로젝트의 풀 미러로 구성하세요. GitLab 리포지토리는 프로젝트의 커밋, 태그, 브랜치의 사본을 가져와 GitLab에서 사용할 수 있게 됩니다.
리포지토리 미러링 생성
전제 조건:
- 프로젝트에 대해 최소한의 Maintainer 역할이 있어야 합니다.
- 미러가
ssh://로 연결되는 경우, 호스트 키는 서버에서 감지되어야 하거나 해당 키의 로컬 복사본을 가져야 합니다.
- 왼쪽 사이드바에서 검색 또는으로 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 리포지토리를 선택합니다.
- 리포지토리 미러링을 확장합니다.
- 새로 추가를 선택합니다.
- Git 리포지토리 URL을 입력합니다. 보안상의 이유로, 원본 리포지토리의 URL은 Maintainer 역할 또는 미러링된 프로젝트의 Owner 역할을 가진 사용자에게만 표시됩니다.
- 미러 방향을 선택합니다.
-
ssh://URL을 입력한 경우, 다음 중 하나를 선택합니다:- 호스트 키 감지: GitLab이 서버에서 호스트 키를 가져와 지문을 표시합니다.
- 수동으로 호스트 키 입력을 선택하고 SSH 호스트 키를 입력합니다.
리포지토리를 미러링할 때, GitLab은 연결하기 전에 저장된 호스트 키 중 적어도 하나가 일치하는지 확인합니다. 이 검사를 통해 미러를 악성 코드 주입으로부터 보호하거나 비밀번호가 도난당하는 것을 방지할 수 있습니다.
- 인증 방법을 선택합니다. 자세한 내용은 미러용 인증 방법을 참조하세요.
- SSH 호스트 키로 인증하는 경우, 올바른지 확인하기 위해 호스트 키를 확인합니다.
- 분기한 참조에 대한 강제 푸시를 방지하려면 분기한 참조 유지를 선택합니다.
- 선택 사항입니다. 미러링할 분기의 수를 제한하려면 오직 보호된 브랜치 미러링을 선택하거나 특정 브랜치 미러링에 정규 표현식을 입력합니다.
- 리포지토리 미러링을 선택합니다.
인증 방법으로 SSH 공개 키를 선택하는 경우, GitLab은 GitLab 리포지토리에 대한 공개 키를 생성합니다. 이 공개 키를 GitLab이 아닌 서버에 제공해야 합니다. 자세한 내용은 SSH 공개 키 가져오기를 참조하세요.
보호된 브랜치만 미러링
미러링 프로젝트의 보호된 브랜치만 미러링하도록 선택할 수 있습니다. 풀 미러링의 경우, 미러링 프로젝트의 보호되지 않은 브랜치는 미러링되지 않고 분기할 수 있습니다.
이 옵션을 사용하려면 리포지토리 미러를 만들 때 오직 보호된 브랜치만 미러링을 선택하세요.
특정 브랜치 미러링
- GitLab 15.8에서 도입됨 :
mirror_only_branches_match_regex라는 플래그와 함께 유효합니다. 기본적으로 비활성화됨.- GitLab 16.0에선 기본적으로 활성화됨.
- GitLab 16.2에선 일반적으로 사용 가능. 피처 플래그
mirror_only_branches_match_regex제거됨.
re2 정규 표현식과 일치하는 이름을 가진 브랜치만 미러링하기 위해 미러 특정 브랜치 필드에 정규 표현식을 입력하세요. 정규 표현식과 일치하지 않는 이름의 브랜치는 미러링되지 않습니다.
미러 업데이트
미러 저장소를 업데이트하면 모든 새 브랜치, 태그 및 커밋이 프로젝트의 활동 피드에서 확인할 수 있습니다. GitLab의 미러 저장소는 자동으로 업데이트됩니다. 또한 수동으로 업데이트를 트리거할 수도 있습니다:
- GitLab.com에서는 5분마다 한 번씩.
- Self-Managed 인스턴스에서는 관리자가 설정한 pull 미러링 간격 제한에 따라.
참고: GitLab Silent Mode는 푸시 및 풀 업데이트를 모두 비활성화합니다.
강제 업데이트
미러는 자동으로 업데이트 예정이지만 다음 경우를 제외하고 즉시 업데이트를 강제할 수 있습니다:
- 이미 미러가 업데이트 중인 경우.
- 풀 미러링 간격이 마지막 업데이트 이후 경과하지 않은 경우.
사전 요구 사항:
- 프로젝트의 유지자(Maintainer) 역할을 최소한으로 가져야 합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 저장소를 선택합니다.
- 미러링 저장소 펼치기를 선택합니다.
- 미러링 저장소로 스크롤하여 업데이트할 미러를 식별합니다.
-
지금 업데이트를 선택합니다():
미러용 인증 방법
미러를 만들 때, 해당 미러의 인증 방법을 구성해야 합니다. GitLab은 다음과 같은 인증 방법을 지원합니다:
- SSH 인증.
- 사용자 이름과 비밀번호.
프로젝트 액세스 토큰 또는 그룹 액세스 토큰의 경우, 사용자 이름(암호 키 이름이 아님)과 비밀 키를 비밀번호로 사용합니다.
SSH 인증
SSH 인증은 상호적입니다:
- 저장소에 액세스할 수 있는 권한이 있는지 서버에 증명해야 합니다.
- 서버는 당신에게 자신이 주장하는 대로인지 증명해야 합니다.
SSH 인증에서는 암호 또는 _공개 키_로 사용자 자격 증명을 제공합니다. 다른 저장소가 있는 서버는 _호스트 키_로 자격 증명을 제공합니다. 이 호스트 키의 지문을 수동으로 확인해야 합니다.
SSH를 통해 미러링하는 경우(ssh:// URL을 사용), 다음 방법으로 인증할 수 있습니다:
- HTTPS처럼 암호 기반 인증.
- 공개 키 인증. 이 방법은 특히 다른 저장소가 배포 키를 지원하는 경우에 암호 기반 인증보다 더 안전합니다.
SSH 공개 키 가져오기
저장소를 미러링하고 인증 방법으로 SSH 공개 키를 선택하면 GitLab이 자동으로 공개 키를 생성합니다. GitLab 저장소에서 다른 서버와 신뢰를 설정하기 위해 이러한 키가 필요합니다. SSH 공개 키를 복사하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 저장소를 선택합니다.
- 미러링 저장소 펼치기를 선택합니다.
- 미러링 저장소로 스크롤하여 올바른 저장소를 식별하고, SSH 공개 키 복사를 선택합니다().
- 생성된 SSH 공개 키를 다른 저장소의 구성에 추가합니다:
- 다른 저장소가 GitLab에 호스팅되는 경우, 생성된 SSH 공개 키를 배포 키로 추가합니다.
- 다른 저장소가 다른 곳에 호스팅되는 경우, 키를 사용자의
authorized_keys파일에 추가합니다. 전체 공개 SSH 키를 파일의 개별 행에 붙여넣은 다음 저장합니다.
필요할 경우 키를 언제든지 변경해야 하는 경우, 미러를 제거하고 다시 추가하여 새 키를 생성합니다. 다른 저장소에 새 키로 미러를 계속 유지하기 위해 다른 저장소를 업데이트합니다.
참고: 생성된 키는 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를 제거해야 할 수도 있습니다.
관련 주제
- 저장소 미러링에 대한 문제 해결.
- Pull Mirroring 간격 설정 구성
- 프로젝트의 미러링 비활성화 비활성화하기
- 비밀 파일 및 미러링
도움말