DevOps/깃허브

[Github] Branch Protection Rule를 설정하기

밥빵 2024. 1. 19. 01:40

Github에서 제공해주는 Branch Protection Rule를 설정 모두 알아보기


Github에는 Branch에 대한 다양한 설정을 할 수 있는 Branch Protection Rule이 있습니다.

Git flow,Github flow등 브랜치 전략 사용 시 브랜치를 사용할 일이 굉장히 많습니다.

특히 팀 프로젝트와 진행 시 브랜치 충돌이나 PR충돌 등 다양한 문제상황을 마주합니다.

 

오늘은 이러한 문제들을 해결하고 브랜치를 보호할 수 있는 Bracnh protection rules에 대해 알아 보겠습니다.

 

 

1. Require a pull Request befor merging

1. Require a pull Request befor merging

Mereg 전 PR 필요

  • Merge 하기 전에 Pull Request가 반드시 필요!

1-1. Require approvals

Merge를 위해 필요한 승인 인원 수 설정

  •  Pull Request를 Merge를 위해 필요한 "approvals" 인원 수 설정

1-2. Dismiss stale pull request approvals when new commits are pushed

기존 승인 취소

  •  리뷰에 새로운 커밋이 발생하는 경우 기존 승인을 취소

1-3. Require review from Code Owners

코드 오너 승인 필수

  •  코드오너에 승인을 필수로 받아야 한다.

1-4. Restrict who can dismiss pull request reviews

Pull Request 취소 권한 부여

  • 특정 팀, 사람에게 Pull Request를 취소할 수 있는 권한을 부여한다.

 

1-5. Allow specified actors to bypass required pull requests

Pull Request 룰 무시

  • 특정 팀, 사람에게 Pull Request 설정 룰을 무시하고 Merge 할 수 있는 권한을 부여한다.

 


2. Require status checks to pass before merging

Mereg 전 상태 체크

  • Github Action Workflow을 통해 테스트 코드 분석이나 정적분석등을 진행할 수도 있고 해당 flow를 통과해야 Merge 가능

1-6. Require branches to be up to date before merging

최신 브랜치 상태 유지

  •  Merge 전 브랜치가 최신상태여야 한다.

 

3. Require conversation resolution before merging

모든 Conversation 확인 후 Merge

  • 코드리뷰를 통해 남겨진 모든 코멘트에 답을  달아야 Merge 가능하다.

4. Require signed commits

서명된 Commit만 Push 가능 

  • verify된 Commit들만 Push가 가능하다.
  • Github GPG key를 발급 받은 사람이 커밋할 경우
  • Verified라는 마크가 붙은 커밋만 푸시할 수 있다.

5. Require linear history

선형적 브랜치 관리,Mereg Commit 불가

  • 스쿼시,리베이스만 허용.
  • 브랜치 모양을 단순하게 관리하고 싶을때

6. Require merge queue

Pull Request 병합 큐 사용

  • Merge queue는 Merge가 가능할 때 자동으로 merge하는 것을 예약할 수 있다.

7. Require deployments to succeed before merging

배포 성공 시 Merge 가능

  • 배포를 성공해야만 Merge가 가능하다.

8. Lock branch

Read-Only

  • 해당 브랜치에 Push 금지
  • Read만 가능

9. Do not allow bypassing the above settings

모든 유저 브랜치 룰 우회 불가

  • 관리자를 포함한 모든 유저에 대해 브랜치 룰 우회 Merge 기능을 막는다.

10. Restrict who can push to matching branches

특정 사용자만 브랜치에 Push 가능

  • 브랜치에 Push를 할 수 있는 사용자를 지정한다.
  • 나머지 사용자는 Push가 불가능하다.

10-1. Restrict pushes that create matching branches

특정 사용자만 브랜치 생성 가능

  • 특정 사용자만 해당 브랜치 룰과 일치하는 브랜치를 생성할 수 있음

11. Allow force pushes

강제 Push 허용

  • 특정 유저에게 강제 Push 권한 허용

12. Allow deletions

Branch 삭제 허용

  • Push 권한이 있는 사용자에게 Branch 삭제 권한 허용