저장소 미러링

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

저장소를 외부 소스로부터 미러링할 수 있습니다. 어떤 저장소가 소스로 사용될지 선택할 수 있습니다. 브랜치, 태그 및 커밋이 자동으로 동기화됩니다.

여러 미러링 방법이 존재합니다:

  • 푸시: GitLab에서 다른 위치로 저장소를 미러링합니다.
  • : 다른 위치에서 저장소를 미러링합니다. Premium 및 Ultimate 티어에서 사용 가능합니다.
  • 양방향 미러링도 가능하지만, 충돌을 일으킬 수 있습니다.

저장소를 미러링하는 경우:

  • 프로젝트의 정식 버전이 GitLab로 이전된 경우. 이전 위치에 프로젝트 사본을 계속 제공하기 위해 GitLab 저장소를 푸시 미러로 설정합니다. GitLab 저장소에서 변경한 내용이 이전 위치에 복사됩니다.
  • GitLab 인스턴스가 비공식적이지만, 일부 프로젝트를 오픈 소스화하고 싶은 경우.
  • GitLab로 이전했지만, 프로젝트의 정식 버전이 다른 곳에 있는 경우. GitLab 저장소를 다른 프로젝트의 풀 미러로 설정합니다. GitLab 저장소는 프로젝트의 커밋, 태그 및 브랜치 사본을 끌어옵니다. 이들은 GitLab에서 사용 가능하게 됩니다.

다음은 지원되지 않습니다:

  • SCP 스타일의 URL. SCP 스타일의 URL 구현 작업이 진행 중입니다.
    더 많은 정보와 진행 상황을 확인하려면 이슈 18993를 참조하세요.
  • 덤 HTTP 프로토콜로 저장소 미러링.

저장소 미러 만들기

사전 요구 사항:

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

    저장소를 미러링할 때, GitLab은 연결하기 전에 저장된 호스트 키 중 적어도 하나가 일치하는지 확인합니다. 이 검사는 악의적인 코드 삽입이나 비밀번호 도난으로부터 미러를 보호할 수 있습니다.

  8. 인증 방법을 선택합니다. 더 많은 정보는 미러에 대한 인증 방법을 참조하세요.
  9. SSH 호스트 키로 인증하는 경우, 호스트 키 확인을 통해 키가 올바른지 확인합니다.
  10. 갈라진 참조에서 강제 푸시를 방지하기 위해 갈라진 참조 유지를 선택합니다.
  11. 선택 사항. 미러링되는 브랜치 수를 제한하려면 보호된 브랜치만 미러링을 선택하거나 특정 브랜치 미러에 regex를 입력합니다.
  12. 미러 저장소를 선택합니다.

SSH 공개 키를 인증 방법으로 선택한 경우, GitLab은 GitLab 저장소를 위한 공개 키를 생성합니다. 이 키를 비-GitLab 서버에 제공해야 합니다. 더 많은 정보는 SSH 공개 키 가져오기를 참조하세요.

보호된 브랜치만 미러링하기

미러링 프로젝트에서 원격 저장소에서 또는 원격 저장소로 보호된 브랜치 만 미러링하도록 선택할 수 있습니다. 풀 미러링에서는 미러링 프로젝트의 비보호 브랜치가 미러링되지 않으며 분기할 수 있습니다.

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

특정 브랜치 미러링하기

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • API에서 옵션으로 정규 표현식과 일치하는 브랜치를 미러링하는 기능은 GitLab 15.8에 도입되었으며, 이름은 mirror_only_branches_match_regex입니다. 기본값으로 비활성화되어 있습니다.
  • 프로젝트 설정에서 도입된 옵션은 GitLab 15.9입니다.
  • GitLab 16.0에서 기본값으로 활성화되어 있습니다.
  • GitLab 16.2에서 일반적으로 제공됩니다. 기능 플래그 mirror_only_branches_match_regex가 제거되었습니다.

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

미러 업데이트

미러 저장소가 업데이트될 때, 모든 새로운 브랜치, 태그 및 커밋이 프로젝트의 활동 피드에 표시됩니다. GitLab의 리포지토리 미러는 자동으로 업데이트됩니다. 업데이트를 수동으로 트리거할 수도 있습니다:

  • GitLab.com에서 5분에 한 번까지 가능합니다.
  • 자기 관리 인스턴스에서 관리자가 설정한 풀 미러링 간격 한도에 따릅니다.
note
GitLab 침묵 모드는 푸시 및 풀 업데이트를 모두 비활성화합니다.

업데이트 강제하기

미러는 자동으로 업데이트하도록 예약되어 있지만, 즉시 업데이트를 강제할 수 있습니다, 단:

  • 미러가 이미 업데이트되고 있는 경우.
  • 마지막 업데이트 이후 풀 미러링 한도 초가 경과하지 않은 경우.

전제 조건:

  • 프로젝트에 대해 최소한 Maintainer 역할을 가져야 합니다.
  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 리포지토리를 선택합니다.
  3. 미러링 리포지토리를 확장합니다.
  4. 미러링된 리포지토리로 스크롤하고 업데이트할 미러를 식별합니다.
  5. 지금 업데이트( )를 선택합니다: Repository mirroring force update user interface

미러에 대한 인증 방법

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

프로젝트 액세스 토큰 또는 그룹 액세스 토큰을 사용하여 토큰 이름이 아닌 사용자 이름과 토큰을 비밀번호로 사용하세요.

SSH 인증

SSH 인증은 상호적입니다:

  • 서버에 접근할 수 있는 권한이 있음을 입증해야 합니다.
  • 서버 역시 당신에게 그것이 주장하는 대로의 서버임을 입증해야 합니다.

SSH 인증을 위해 자격 증명을 비밀번호나 _공개 키_로 제공합니다.

다른 저장소가 있는 서버는 _호스트 키_로 자격 증명을 제공합니다.

이 호스트 키의 지문을 수동으로 확인해야 합니다.

SSH를 통해 미러링을 하는 경우(ssh:// URL 사용), 다음 방법으로 인증할 수 있습니다:

  • HTTPS처럼 비밀번호 기반 인증.
  • 공개 키 인증. 이 방법은 비밀번호 인증보다 더 안전한 경우가 많습니다, 특히 다른 저장소가 배포 키를 지원하는 경우에는 더욱 그렇습니다.

SSH 공개 키 가져오기

저장소를 미러링하고 SSH 공개 키를 인증 방법으로 선택하면, GitLab이 공개 키를 생성합니다. 비-GitLab 서버는 GitLab 저장소와의 신뢰 관계를 형성하기 위해 이 키가 필요합니다. SSH 공개 키를 복사하려면:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > Repository를 선택합니다.
  3. Mirroring repositories를 확장합니다.
  4. Mirrored repositories로 스크롤합니다.
  5. 올바른 저장소를 식별하고 Copy SSH public key( )를 선택합니다.
  6. 공개 SSH 키를 다른 저장소의 구성에 추가합니다:
    • 다른 저장소가 GitLab에 호스팅되어 있는 경우, 공개 SSH 키를 배포 키로 추가합니다.
    • 다른 저장소가 다른 곳에 호스팅되어 있는 경우, 사용자의 authorized_keys 파일에 키를 추가합니다. 전체 공개 SSH 키를 파일의 단독 줄에 붙여넣고 저장합니다.

언제든지 키를 변경해야 하는 경우, 미러를 제거한 후 다시 추가하여 새로운 키를 생성할 수 있습니다. 새 키로 다른 저장소를 업데이트하여 미러가 계속 작동하게 하세요.

참고: 생성된 키는 GitLab 데이터베이스에 저장되며, 파일 시스템에는 저장되지 않습니다. 따라서 미러에 대한 SSH 공개 키 인증은 수신 전 훅에서 사용할 수 없습니다.

호스트 키 확인하기

호스트 키를 사용할 때는 항상 지문이 예상하는 것과 일치하는지 확인하세요.

GitLab.com 및 기타 코드 호스팅 사이트는 지문을 게시하여 확인할 수 있게 합니다:

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

  • 자체 관리형 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를 제거해야 할 수도 있습니다.

관련 주제