1. GitHub CODEOWNERS 소개
- GitHub CODEOWNERS는 리포지토리 내 코드의 책임자를 정의하는 기능입니다.
- 이를 통해 특정 코드 영역에 대해 자동으로 리뷰 요청을 받을 담당자나 팀을 지정할 수 있습니다.
- 풀 리퀘스트가 생성될 때 변경된 파일에 대한 코드 소유자에게 자동으로 리뷰 요청이 전송됩니다.
1.1 CODEOWNERS의 주요 이점
- 팀 구성원의 전문 분야를 명확히 하고 책임 소재를 분명히 합니다.
- 적절한 리뷰어를 수동으로 찾아 지정하는 과정을 자동화합니다.
- 코드 변경 시 관련 전문가의 리뷰를 보장하여 코드 품질을 향상시킵니다.
- 브랜치 보호 규칙과 결합하여 코드 소유자의 승인 없이는 병합할 수 없도록 설정할 수 있습니다.
1.2 사용 권한
- CODEOWNERS 파일을 생성하거나 편집하려면 리포지토리에 대한 쓰기 권한이 필요합니다.
- 코드 소유자로 지정된 사용자나 팀도 리포지토리에 대한 쓰기 권한이 있어야 합니다.
- 관리자 또는 소유자 권한이 있는 사용자는 풀 리퀘스트 병합 전에 코드 소유자의 승인을 필수로 요구하도록 설정할 수 있습니다.
2. CODEOWNERS 설정 방법
2.1 파일 위치
- CODEOWNERS 파일은 다음 위치 중 하나에 생성할 수 있습니다:
.github/
디렉토리- 리포지토리의 루트 디렉토리
docs/
디렉토리
- GitHub는 위의 순서대로 파일을 검색하고 처음 발견한 파일을 사용합니다.
- 각 CODEOWNERS 파일은 리포지토리의 단일 브랜치에 대한 코드 소유자를 지정합니다.
정보
서로 다른 브랜치에 대해 다른 코드 소유자를 지정할 수 있습니다. 예를 들어, 기본 브랜치의 코드베이스에는 @octo-org/codeowners-team
을, GitHub Pages용 gh-pages 브랜치에는 @octocat
을 지정할 수 있습니다.
2.2 파일 크기 제한
- CODEOWNERS 파일은 3MB 미만이어야 합니다.
- 이 제한을 초과하는 파일은 로드되지 않으며, 코드 소유자 정보가 표시되지 않고 적절한 코드 소유자에게 리뷰 요청이 전송되지 않습니다.
- 파일 크기를 줄이려면 와일드카드 패턴을 사용하여 여러 항목을 하나의 항목으로 통합하는 것이 좋습니다.
3. CODEOWNERS 문법 가이드
3.1 기본 문법
- CODEOWNERS 파일은 gitignore 파일과 유사한 패턴 규칙을 사용합니다.
- 각 줄은 파일 패턴과 하나 이상의 소유자로 구성됩니다.
- 소유자는
@username
또는@org/team-name
형식을 사용합니다.
기본 문법 예시
# 이것은 주석입니다.
# 각 줄은 파일 패턴과 하나 이상의 소유자로 구성됩니다.
# 이 소유자들은 리포지토리의 모든 파일에 대한 기본 소유자가 됩니다.
# 나중에 더 구체적인 매칭이 없는 한, @global-owner1과 @global-owner2가
# 풀 리퀘스트에 대한 리뷰 요청을 받게 됩니다.
* @global-owner1 @global-owner2
# JavaScript 파일 을 수정하는 풀 리퀘스트는 @js-owner에게만 리뷰 요청이 갑니다.
*.js @js-owner
# 이메일 주소도 사용할 수 있습니다.
*.go docs@example.com
3.2 고급 패턴 사용법
- 디렉토리와 하위 디렉토리에 대한 소유권을 지정할 수 있습니다.
- 특정 경로에 대한 소유자를 지정하거나 제외할 수 있습니다.
- 여러 소유자를 동일한 패턴에 매칭시키려면 모든 소유자가 같은 줄에 있어야 합니다.