롯데카드 · GitLab 도입 가이드 04. Approval Flows 기능 상세
CHAPTER 04 · 고객 문의 5번

04. Approval Flows 기능 상세

고객 문의 — Approval Flows 기능 상세 — 실제 데모 혹은 화면이라도 어떻게 구성되어 있는지 확인이 가능하면 좋겠습니다.

요약 답변

"Approval Flows"는 GitLab 공식 기능명이 아니라, Merge Request 승인 체계 전반을 부르는 표현으로 이해하고 답변하는 것이 정확합니다. 실제 제품에서는 다음 요소들이 조합되어 승인 흐름을 만듭니다.

구성 요소역할티어
Merge Request approvalsMR에 승인/승인 취소, 승인 상태 표시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 목록에서 승인 상태 확인

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

04-2. MR 상세 화면 전체

MR 상세
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)

Merge checks
Merge checks
  • 병합 전에 검증되는 조건 목록입니다. MR 오픈 상태, Draft 아님, 충돌 해결, 스레드 해결, LFS 잠금 해제 등이 체크됩니다.

04-6. 프로젝트 설정: 병합 방식과 Merge checks

MR 설정 상단
MR 설정 상단
  • 위치: 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 creatorMR 작성자 본인 승인 금지 (이 데모에서는 켜져 있음)
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")

운영 모델 제안 (고객 설명용)

  1. 기본 모델: main 보호 + 필수 승인 1~2명 + 파이프라인 성공 필수. 대부분의 팀에 충분합니다.
  2. 전문가 모델: CODEOWNERS로 디렉터리별 담당자 지정 (예: config/는 플랫폼 팀). 보호 브랜치에서 "Require approval from code owners"를 켜면 파일 단위 승인이 됩니다.
  3. 보안 강화 모델 (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)