CHAPTER 04 · 고객 문의 5번
04. Approval Flows 기능 상세
고객 문의 — Approval Flows 기능 상세 — 실제 데모 혹은 화면이라도 어떻게 구성되어 있는지 확인이 가능하면 좋겠습니다.
요약 답변
"Approval Flows"는 GitLab 공식 기능명이 아니라, Merge Request 승인 체계 전반을 부르는 표현으로 이해하고 답변하는 것이 정확합니다. 실제 제품에서는 다음 요소들이 조합되어 승인 흐름을 만듭니다.
| 구성 요소 | 역할 | 티어 |
|---|---|---|
| Merge Request approvals | MR에 승인/승인 취소, 승인 상태 표시 | Free부터 (선택적 승인) |
| Approval rules | 필수 승인자 수, 승인자 그룹/역할 지정 | Premium 이상 |
| CODEOWNERS | 파일·디렉터리별 담당자를 코드로 정의하고 승인 강제 | Premium 이상 |
| Approval settings | 작성자 본인 승인 금지, 신규 커밋 시 승인 초기화 등 | Premium 이상 |
| Merge checks | 파이프라인 성공, 스레드 해결 등 병합 전제 조건 | Free부터 일부 |
| Security approval policies | 취약점 탐지 시 보안 팀 승인 강제 | Ultimate |
핵심 포인트: 필수 승인(Required approvals)은 Premium부터입니다. Free에서는 승인을 달 수 있지만 병합을 막지는 못합니다.
화면 흐름 (Siren Order 프로젝트 실제 화면)
04-1. MR 목록에서 승인 상태 확인

- 위치: 프로젝트 > Code > Merge requests
- 각 MR 행에 "0 of 2 Approvals"처럼 필수 승인 충족 여부가 배지로 표시됩니다. 파이프라인 상태, 미해결 스레드 수도 함께 보입니다.
04-2. MR 상세 화면 전체

- MR 본문, 연결된 이슈, 파이프라인 결과, 승인 위젯, 활동 로그(리뷰 요청, 커밋 추가, 코멘트 스레드)가 한 화면에 모입니다.
04-3. 승인 게이트와 병합 차단

- "Requires 2 approvals from 품질리뷰." — 이 프로젝트의 main 브랜치는 '품질리뷰' 규칙으로 승인 2건이 필요합니다.
- "Merge blocked: 1 check failed / All required approvals must be given."처럼 승인 미충족 시 병합이 차단되는 상태를 그대로 보여줍니다.
- 조건 충족 시 자동 병합(Merge when checks pass) 옵션도 이 위젯에서 설정합니다.
04-4. 적격 승인자 펼치기

- "Expand eligible approvers" 버튼을 클릭하면 규칙별로 누가 승인할 수 있는지 표시됩니다. 이 화면에서는 품질리뷰 규칙에 Jason Lee, Michael Shin 두 명이 지정되어 있고 0/2 상태입니다.
- "Any eligible user" 같은 최소 승인 규칙도 함께 표시됩니다. 커버리지 하락 시 승인을 요구하는 Coverage-Check 같은 특수 규칙은 5-7의 설정 화면에서 관리합니다.
04-5. 병합 전제 조건 (Merge checks)

- 병합 전에 검증되는 조건 목록입니다. MR 오픈 상태, Draft 아님, 충돌 해결, 스레드 해결, LFS 잠금 해제 등이 체크됩니다.
04-6. 프로젝트 설정: 병합 방식과 Merge checks

- 위치: Settings > Merge requests
- 병합 방식(Merge commit / semi-linear / fast-forward), Merged results pipelines, Merge trains, "Pipelines must succeed", "All threads must be resolved" 같은 체크를 설정합니다.
04-7. 승인 규칙 설정

- 같은 페이지의 "Merge request approvals" 섹션입니다. 이 프로젝트에는 2개 규칙이 있습니다.
- Coverage-Check: 커버리지 하락 시 승인 요구 (Any eligible user, 현재 0으로 설정)
- 품질리뷰: main 브랜치 대상, Jason Lee·Michael Shin, 2건 필수
- 아래 Approval settings에서 세부 동작을 제어합니다.
04-8. 보안 승인 정책 (Ultimate 참고 화면)

- 위치: Secure > Policies
- Ultimate에서는 여기서 "Merge request approval policy"를 만들어, 예를 들어 Critical 취약점이 탐지된 MR에 보안 팀 승인을 강제할 수 있습니다. 이 데모 프로젝트에는 아직 policy.yml이 없어 빈 상태 화면이 보입니다.
승인 설정(Approval settings) 옵션 설명
| 옵션 | 효과 |
|---|---|
| Prevent approval by merge request creator | MR 작성자 본인 승인 금지 (이 데모에서는 켜져 있음) |
| Prevent approvals by users who add commits | 커밋을 추가한 사용자의 승인 금지 |
| Prevent editing approval rules in merge requests | 개별 MR에서 규칙 수정 금지 |
| Require user re-authentication to approve | 승인 시 재인증 요구 |
| When a commit is added | 신규 커밋 시 승인 유지 / 전부 초기화 / 변경된 파일의 Code Owner 승인만 초기화 (이 데모는 "Remove all approvals") |
운영 모델 제안 (고객 설명용)
- 기본 모델: main 보호 + 필수 승인 1~2명 + 파이프라인 성공 필수. 대부분의 팀에 충분합니다.
- 전문가 모델: CODEOWNERS로 디렉터리별 담당자 지정 (예:
config/는 플랫폼 팀). 보호 브랜치에서 "Require approval from code owners"를 켜면 파일 단위 승인이 됩니다. - 보안 강화 모델 (Ultimate): 취약점 심각도 조건으로 보안 팀 승인을 자동 요구하는 정책을 코드로 관리합니다.
공식 출처
- Merge request approvals: https://docs.gitlab.com/user/project/merge_requests/approvals/ (승인: Free부터, Required approvals: Premium 이상)
- Approval settings: https://docs.gitlab.com/user/project/merge_requests/approvals/settings/
- CODEOWNERS: https://docs.gitlab.com/user/project/codeowners/ (Premium 이상)
- Merge request approval policies: https://docs.gitlab.com/user/application_security/policies/merge_request_approval_policies/ (Ultimate)
