프로젝트 Repository 설정
Default branch
새 프로젝트를 만들 때 GitLab은 main
를 리포지터리의 기본 브랜 치로 설정합니다. 프로젝트의 Settings > Repository에서 다른 브랜치를 프로젝트의 디폴트(Default)로 선택할 수 있습니다.
이슈 종료 패턴을 통해 병합 요청에서 직접 이슈를 종료할 때, 대상은 프로젝트의 기본 브랜치입니다.
기본 브랜치는 실수로 삭제되거나 강제 푸시되지 않도록 초기에 보호됩니다.
커스텀 초기 브랜치 이름
기본적으로 GitLab에서 새 프로젝트를 만들 때, 초기 브랜치는 main
입니다. 자체 관리 형 인스턴스의 경우 GitLab Admin는 초기 브랜치 이름을 다른 이름으로 커스터마이징 할 수 있습니다. 이렇게 하면, 그때부터 새로 생성된 모든 프로젝트는 master가 아닌 커스텀 브랜치 이름에서 시작하게 됩니다. 그렇게 하려면 :
- Admin Area > Settings > Repository로 이동하여 Default initial branch name을 확장합니다.
- Default initial branch name 필드에서 원하는 커스텀 이름으로 변경합니다.
- Save Changes 버튼을 클릭합니다.
Repository 미러링
리포지터리 미러링을 사용하면 외부 소스와 리포지터리를 미러링할 수 있습니다. 리포지터리 간의 브랜치, 태그 및 커밋을 미러링하는 데 사용할 수 있습니다.
GitLab의 리포지터리 미러(mirror)는 자동으로 업데이트됩니다. 최대 5 분마다 업데이트를 수동으로 트리거할 수도 있습니다. 지연을 잠재적으로 줄이는 방법에 대한 토론을 보려면 이 이슈를 따르십시오.
개요
리포지터리 미러링은 GitLab 외부의 리포지터리를 사용하려는 경우 유용합니다.
GitLab에서 지원하는 두 종류의 리포지터리 미러링이 있습니다.
- Push : GitLab 리포지터리를 다른 위치로 미러링합니다.
- Pull : 다른 위치에서 GitLab으로 리포지터리를 미러링합니다.
미러 리포지터리가 업데이트되면, 모든 새 브랜치, 태그 및 커밋이 프로젝트의 활동 피드(activity feed)에 표시됩니다.
Developer 이상의 프로젝트에 대한 액세스 권한이 있는 사용자는 다음과 같은 경우를 제외하고 즉시 업데이트를 강제할 수도 있습니다.
- 미러가 이미 업데이트 중입니다.
- 마지막 업데이트 이후 5 분이 지나지 않았습니다.
보안상의 이유로, GitLab 12.10 이상에서 원본 리포지터리의 URL은 미러링된 프로젝트에 대한 Maintainer 또는 Owner 권한이 있는 사용자에게만 표시됩니다.
사용 사례
다음은 리포지터리 미러링의 몇 가지 가능한 사용 사례입니다.
- GitLab으로 마이그레이션했지만 여전히 프로젝트를 다른 소스에 유지해야 합니다. 이 경우, GitLab으로 미러링하도록(pull) 설정하기 만하면 커밋, 태그 및 브랜치의 모든 필수 기록을 GitLab 인스턴스에서 사용할 수 있습니다.
- 더 이상 적극적으로 사용하지 않지만 보관 목적으로 제거하고 싶지 않은 다른 소스에 오래된 프로젝트가 있습니다. 이 경우, 활성 GitLab 리포지터리가 변경사항을 이전 위치로 푸시할 수 있도록 푸시 미러(push mirror)를 생성할 수 있습니다.
- 개인 정보 보호를 위해 GitLab 자체 관리형 사용자이며 인스턴스가 공개되지 않지만, 오픈 소스를 원하는 특정 소프트웨어 구성 요소는 여전히 보유하고 있습니다. 이 경우, GitLab을 대중으로부터 폐쇄된 기본(primary) 리포지터리로 사용하고 공개된 GitLab.com 리포지터리에 푸시 미러링을 사용하면, 특정 프로젝트를 오픈하고 오픈 소스 커뮤니티에 다시 기여할 수 있습니다.
원격 리포지터리로 푸시
기존 프로젝트의 경우, 다음과 같이 푸시 미러링을 설정할 수 있습니다.
- 프로젝트의 Settings > Repository로 이동하고 Mirroring repositories 섹션을 확장합니다.
- 리포지터리 URL을 입력합니다.
- Mirror direction 드롭다운에서 Push을 선택합니다.
- 필요한 경우, Authentication method에서 인증 방법을 선택합니다.
- 원하는 경우, Keep divergent refs (분기 참조 유지) 체크박스를 체크합니다.
- 필요한 경우, Only mirror protected branches (보호된 브랜치만 미러) 체크박스를 체크합니다.
- Mirror repository 버튼을 클릭하여 구성을 저장합니다.
푸시 미러링이 활성화된 경우, 미러링된 리포지터리에만 직접 커밋 푸시하여 미러 분기를 방지합니다. 다음과 같은 경우 모든 변경사항은 미러링된 리포지터리에 저장됩니다.
- 커밋은 GitLab에 푸시됩니다.
- 강제 업데이트가 시작됩니다.
리포지터리의 파일에 푸시된 변경사항은 최소한 다음과 같이 원격 미러에 자동으로 푸시됩니다.
- 접수 후 5 분 이내
- Only mirror protected branches가 활성화된 경우 1분 이내
분기된 브랜치의 경우, Mirroring repositories 섹션에 오류가 표시됩니다.
보호된 브랜치
GitLab의 권한은 기본적으로 리포지터리 및 브랜치에 대한 읽기 또는 쓰기 권한을 갖는 개념을 중심으로 정의됩니다. 특정 브랜치에 추가 제한을 적용하기 위해 보호할 수 있습니다.
개요
기본적으로 보호된 브랜치는 네 가지 간단한 작업을 수행합니다.
- Maintainer 권한이 있는 사용자를 제외한 모든 사용자가 아직 생성하지 않은 경우, 생성을 방지합니다.
- Allowed 권한이 있는 사용자를 제외한 모든 사용자의 푸시를 방지합니다.
- 누군가 브랜치에 강제 푸시하는 것을 방지합니다.
- 누구도 브랜치를 삭제하지 못하도록 합니다.
참고 : GitLab Admin은 보호된 브랜치에 푸시할 수 있습니다.
기본 브랜치 보호 수준은 Admin Area에서 설정됩니다.
보호된 브랜치 구성
브랜치를 보호하려면, 최소한 Maintainer 권한 수준이 있어야 합니다. main
브랜치는 기본적으로 보호됩니다.
- 프로젝트의 Settings > Repository로 이동합니다.
- 스크롤하여 Protected branches 섹션을 찾습니다.
- Branch 드롭다운 메뉴에서, 보호할 브랜치를 선택하고 Allowed to merge, Allowed to push 드롭다운에서 원하는 권한을 선택한 다음, Protect 버튼을 클릭합니다. 아래 스크린샷에서 develop 브랜치를 선택했습니다.
- 완료되면, 보호된 브랜치가 "보호된 브랜치" 목록에 나타납니다.
Allowed to merge과 Allowed to push 설정 사용
GitLab 8.11 이상에서는 보호된 브랜치를 보다 세밀하게 관리할 수 있는 또 다른 분기 보호 계층을 추가했습니다. "Developers can push" 옵션은 "Allowed to push" 설정으로 대체되었습니다. 이 옵션은 Maintainer와 Developer 모두 또는 둘 중 하나가 보호된 브랜치로 푸시하는 것을 허용하거나 금지하도록 설정할 수 있습니다.
"Allowed to push" 및 "Allowed to merge" 설정을 사용하면, 보호된 브랜치를 사용하여 다른 역할이 수행할 수 있는 작업을 제어할 수 있습니다. 예를 들어, "Allowed to push"을 "No one"로, "Allowed to merge"을 "Developers + Maintainers"로 설정하여, 모든 사람이 보호된 브랜치로 이동하는 변경사항에 대한 병합 요청을 제출하도록 요구할 수 있습니다. 이는 GitLab workflow와 같은 워크플로우와 호환됩니다.
그러나, 이것이 필요하지 않은 워크플로우가 있으며, 강제 푸시 및 브랜치 제거로부터 보호하는 것만이 유용한 경우도 있습니다. 이러한 워크플로우의 경우, "Allowed to push"을 "Developers + Maintainers"로 설정하여 쓰기 액세스 권한이 있는 모든 사용자가 보호된 브랜치로 푸시하도록 허용할 수 있습니다.
보호된 브랜치를 생성하는 동안 또는 나중에 이미 보호된 브랜치 목록의 드롭다운에서 원하는 옵션을 선택하여 "Allowed to push" 및 "Allowed to merge" 옵션을 설정할 수 있습니다.
보호된 태그
보호된 태그를 사용하면 태그 생성 권한이 있는 사용자를 제어할 수 있을 뿐만 아니라 생성된 태그를 실수로 업데이트 또는 삭제하는 것을 방지할 수 있습니다. 각 규칙을 사용하면 개별 태그 이름을 일치시키거나 와일드카드를 사용하여 한 번에 여러 태그를 제어할 수 있습니다.
이 기능은 보호된 브랜치에서 발전했습니다.
개요
보호된 태그는 다른 사용자가 태그를 업데이트하거나 삭제하는 것을 방지하고, 선택한 권한을 기반으로 일치하는 태그를 생성하지 못하게 합니다. 기본적으로 Maintainer 권한이 없는 사용자는 태그를 만들 수 없습니다.
보호된 태그 구성
태그를 보호하려면, 최소한 Maintainer 권한 수준이 있어야 합니다.
- 프로젝트의 Settings > Repository로 이동합니다.
- 스크롤하여 Protected Tags 섹션을 찾아 확장합니다.
- Tag 드롭다운 메뉴에서, 보호할 태그를 선택하거나 태그 와일드카드를 입력하고 Create wildcard를 클릭합니다. 아래 스크린샷에서,
v*
와 일치하는 모든 태그를 보호하도록 선택했습니다.
- Allowed to create 드롭다운에서, 일치하는 태그를 만들 수 있는 권한을 가진 사용자를 선택한 다음 Protect 버튼을 클릭합니다.
- 완료되면 보호된 태그가 Protected tag 목록에 나타납니다.
와일드카드 보호 태그
와일드카드 보호 태그를 지정하면, 와일드카드와 일치하는 모든 태그를 보호할 수 있습니다. 예를 들면 :
와일드카드 보호된 태그 | 매칭 태그 |
---|---|
v* | v1.0.0 , version-9.1 |
*-deploy | march-deploy , 1.0-deploy |
*gitlab* | gitlab , gitlab/v1 |
* | v1.0.1rc2, accidental-tag |
두 개의 서로 다른 와일드카드가 잠재적으로 동일한 태그와 일치할 수 있습니다. 예를 들어, *-stable
와 production-*
는 둘 다 production-stable
태그와 일치합니다. 이 경우, 이러한 보호된 태그 중 하나라도 Allowed to created와 같은 설정이 있으면, production-stable
도 이 설정을 상속합니다.
보호된 태그의 이름을 클릭하면, 일치하는 모든 태그 목록이 표시됩니다.