Code Owner 설정
Code Owner
codeowner는 소유한 코드에 대한 수정이 일어나서 PR이 open된 경우에 자동으로 review를 요청받게 된다. 기본적으로는 codeowner를 설정하게 되면 코드소유자에게 review를 요청하도록 자동으로 지정되며, 이때 추가 설정으로 review를 필수/승인을로 하도록 설정할 수도 있다.
code owner는 CODEOWNERS 단일 파일 내에서 설정하며 레포지토리의 코드마다 여러개의 코드소유자를 다르게 설정 할 수 있고, branch 별로 등록된 CODEOWNERS 파일의 코드 소유자 정보를 가져오므로 브랜치별로도 다른 owner들을 설정 할 수 있다.
Code Owner 설정 방법
Codeowner를 설정하고자 하는 브랜치에 CODEOWNERS파일을 추가한다. 이때 PR의 병합의 목적지가 되는 브랜치에 CODEOWNERS파일이 존재해야 해당 PR에 코드 소유자가 자동으로 리뷰를 요청 받을 수 있다.
- CODEOWNERS 파일의 위치
- 레포지토리의 .github/, root, docs/ 디렉토리 위치의 CODEOWNERS 파일을 읽어오게 되어있으며, 기재된 디렉토리의 순서대로 읽기 때문에 .github/ 의 우선순위가 가장 높다고 볼 수 있다.
- 각 Branch 별로 CODEOWNERS를 다르게 설정 할 수 있으며, PR의 대상이 되는 각 Branch에 등록된 CODEOWNERS파일에 기재된 소유자들이 PR의 리뷰어로 요청된다.
- CODEOWNERS 문법
- 코드를 명시하는 패턴은 gitignore에 사용되는 규칙을 대부분 따르고, 대상코드를 나타내는 패턴 뒤에는 @로 시작하는 Github 사용자이름, 팀 이름 중 하나 이상을 기재한다.
- gitignore 문법 중 CODEOWNERS에는 적용되지 않는X 규칙
- \를 사용해서 #를 주석이 아닌 패턴으로 인식하도록 하는 이스케이핑 패턴
- 패턴을 부정하는 용도의 !
- [ ] 를 사용해서 문자 범위 정의
- gitignore 문법 중 CODEOWNERS에는 적용되지 않는X 규칙
- 소유자로 지정되는 사용자/팀은 레포에 대한 명시적 write 권한이 있어야 한다.
- 동일한 패턴에 여러 소유자가 있는 경우 소유자들이 모두 같은 줄에 있어야 한다.
- 대소문자를 구분한다.
- 코드를 명시하는 패턴은 gitignore에 사용되는 규칙을 대부분 따르고, 대상코드를 나타내는 패턴 뒤에는 @로 시작하는 Github 사용자이름, 팀 이름 중 하나 이상을 기재한다.
- CODEOWNERS 파일 예시 (https://docs.github.com/ko/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#example-of-a-codeowners-file)
# This is a comment.
# Each line is a file pattern followed by one or more owners.
# repo내 모든 파일에 대한 기본 owner. 아래에서 따로 패턴이 지정되지 않는 경우 global-owner들이 지정됨
* @global-owner1 @global-owner2
# 순서에 따라서 가장 마지막에 매치되는 패턴이 우선순위가 높음
# .js 파일에 대해서는 global owners가 아닌 js-owner만 review를 요청받음
*.js @js-owner #This is an inline comment.
# @사용자가 아닌 메일도 사용 가능
*.go docs@example.com
# @org/team-name 형태로 사용자가 아닌 팀으로 지정가능
*.txt @octo-org/octocats
# build/logs 하위의 모든 파일 및 디렉토리
/build/logs/ @doctocat
# docs 하위의 파일들을 모두 포함하나 docs/build-app/troubleshooting.md와 같은 nested files은 포함 안됨
docs/* docs@example.com
# 레포 내 모든 apps/ 디렉토리 하위 모든 파일
apps/ @octocat
# root 디렉토리 하위의 docs/ 디렉토리 하위 모든 파일 및 디렉토리
/docs/ @doctocat
# /logs 디렉토리 안의 모든 파일이며,
# `/build/logs`, `/scripts/logs`, `/deeply/nested/logs` 같은 여러개의 상위 디렉토리를 모두 포함함
**/logs @octocat
# /apps/github 제외한 /apps/ 하위 모든 파일,디렉토리에 대해서는 @octocat이 지정
# /apps/github은 code owner를 지정하지 않으므로 레포의 쓰기 권한을 가진 누구든 승인가능
/apps/ @octocat
/apps/github
# /apps/github 제외한 /apps/ 하위 모든 파일,디렉토리에 대해서는 @octocat이 지정
# /apps/github은 @doctocatㅇ이 owner로 지정됨
/apps/ @octocat
/apps/github @doctocat
참고
'Git' 카테고리의 다른 글
로컬에 남아있는 불필요한 branch 삭제 (0) | 2023.12.24 |
---|---|
git push 되돌리기 (0) | 2022.05.22 |
Git pull / fetch/ stash 사용법 (error: 병합하기 전에 변경 사항을 커밋하거나 스태시하십시오 해결) (0) | 2022.05.12 |