병합 요청 승인 규칙

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

승인 규칙은 병합 요청이 머지되기 전에 받아야 할 승인의 수와 승인을 담당해야 하는 사용자를 정의합니다. 이들은 코드 소유자와 함께 사용하여 변경 사항이 기능을 유지 관리하는 그룹과 특정 책임 영역을 담당하는 그룹에 의해 검토되도록 보장할 수 있습니다.

승인 규칙을 정의할 수 있습니다:

승인 규칙을 구성할 수 있습니다:

기본 승인 규칙을 정의하지 않으면, 모든 사용자가 병합 요청을 승인할 수 있습니다. 규칙을 정의하지 않더라도 프로젝트 설정에서 필수 승인자 수를 시행할 수 있습니다.

다른 프로젝트를 대상으로 하는 병합 요청, 예를 들어 포크에서 업스트림 프로젝트로의 요청은 소스(포크)가 아니라 대상(업스트림) 프로젝트의 기본 승인 규칙을 사용합니다.

병합 요청 승인은 정책으로 모든(또는 일부) 프로젝트에 걸쳐 글로벌하게 적용되도록 구성할 수 있습니다. 병합 요청 승인 정책 또한 보다 세부적인 구성 옵션으로 추가적인 유연성을 제공합니다.

승인 규칙 추가

  • GitLab 15.3에 도입된 모든 보호된 브랜치에 대한 승인 규칙입니다.

전제 조건:

  • 프로젝트에 대해 최소한 Maintainer 역할을 가져야 합니다.
  • GitLab.com에서 그룹을 승인자로 추가하려면, 그룹의 구성원이거나 그룹이 공개여야 합니다.

병합 요청 승인 규칙을 추가하려면:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > Merge requests를 선택합니다.
  3. Merge request approvals 섹션의 Approval rules 섹션에서 Add approval rule을 선택합니다.
  4. 오른쪽 사이드바에서 필드를 완료합니다:
    • Approvals required에서 값 0규칙을 선택 사항으로 만들고, 0보다 큰 숫자는 필수 규칙을 생성합니다.
      필수 승인 최대 수는 100입니다.
    • Add approvers에서 승인할 수 있는 사용자 또는 그룹을 선택합니다.
      GitLab은 병합 요청으로 변경된 파일의 이전 저자를 기반으로 승인자를 제안합니다.
  5. Save changes를 선택합니다. 다수의 승인 규칙을 추가할 수 있습니다.

승인 규칙 무효화 구성은 새로운 규칙이 기존 병합 요청에 적용되는지를 결정합니다:

  • 승인 규칙 무효화가 허용되면, 이러한 기본 규칙에 대한 변경 사항은 기존 병합 요청에 적용되지 않지만, 규칙의 대상 브랜치 변경 사항은 적용됩니다.
  • 승인 규칙 무효화가 허용되지 않으면, 기본 규칙에 대한 모든 변경 사항이 기존 병합 요청에 적용됩니다. 승인 규칙 무효화가 허용되었을 때 수동으로 무효화된 모든 승인 규칙은 수정되지 않습니다.

승인 규칙 편집

선행 조건:

  • 프로젝트에 대해 최소한 Maintainer 역할이 있어야 합니다.
  • GitLab.com에서 그룹을 승인자로 추가하려면 해당 그룹의 구성원이어야 하거나 그룹이 공개되어 있어야 합니다.

병합 요청 승인 규칙을 편집하려면:

  1. 왼쪽 사이드바에서 검색하거나 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 요청 승인 섹션의 승인 규칙 섹션에서 편집할 규칙 옆에 있는 편집을 선택합니다.
  4. 오른쪽 사이드바에서 필드를 편집합니다:
    • 필요한 승인에서 0의 값은 규칙을 선택 사항으로 만듭니다, 0보다 큰 수는 필수 규칙을 만듭니다. 필요한 승인 최대 수는 100입니다.
    • 사용자나 그룹을 제거하려면 제거할 그룹 또는 사용자를 식별하고 제거를 선택합니다 ( ).
  5. 변경 사항 저장을 선택합니다.

승인 규칙 삭제

선행 조건:

  • 프로젝트에 대해 최소한 Maintainer 역할이 있어야 합니다.

병합 요청 승인 규칙을 삭제하려면:

  1. 왼쪽 사이드바에서 검색하거나 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 요청 승인 섹션에서 삭제할 규칙 옆에 있는 쓰레기통 아이콘 ( )을 선택합니다.
  4. 승인자 제거를 선택합니다.

다중 승인 규칙

병합 요청에 다중 승인 규칙을 적용하려면 프로젝트에 대해 여러 기본 승인 규칙을 추가합니다.

적격 승인자가 병합 요청을 승인하면, 그 승인자는 해당 승인자가 속한 모든 규칙에 대해 남은 승인 수(승인 열)를 줄입니다:

병합 요청 승인 위젯

개요는 다중 승인자를 참조하세요.

적격 승인자

프로젝트의 승인자로 적합하려면 사용자는 다음 중 하나의 구성원이어야 합니다:

개발자 역할을 가진 사용자는 다음 중 하나가 사실이면 병합 요청을 승인할 수 있습니다:

  • 프로젝트 또는 병합 요청 수준에서 승인자로 추가된 사용자.
  • 병합 요청에서 변경된 파일의 코드 소유자.

리포터 역할을 가진 사용자는 다음 두 가지가 모두 사실일 경우에만 승인할 수 있습니다:

  • 사용자는 프로젝트와 공유된 그룹의 구성원입니다. 그룹은 최소한 리포터 역할을 가져야 합니다.
  • 병합 요청 승인자로 그룹이 추가되었습니다.

자세한 지침은 병합 요청 승인 권한 분리를 참조하세요.

병합 요청 검토에 참여한 사람을 표시하기 위해 병합 요청의 승인 위젯은 주석 작성자 열을 표시합니다. 이 열에는 병합 요청에 주석을 단 적격 승인자가 나열됩니다. 이를 통해 작성자와 리뷰어는 병합 요청 내용에 대한 질문이 있을 경우 연락할 사람을 식별할 수 있습니다.

필요한 승인 수가 할당된 승인자 수보다 많으면 프로젝트에서 적어도 개발자 역할을 가진 다른 사용자의 승인도 필요한 승인 수를 충족하는데 계산되며, 비록 해당 사용자가 승인 규칙에 명시적으로 나열되지 않았더라도 그렇습니다.

그룹 승인자

사용자 그룹을 승인자로 추가할 수 있습니다. 이 그룹의 모든 직접 회원은 규칙을 승인할 수 있습니다. 상속된 회원은 규칙을 승인할 수 없습니다.

일반적으로 그룹은 최상위 네임스페이스의 하위 그룹이지만 외부 그룹과 협력할 경우에는 예외입니다. 다른 그룹과 협력하는 경우, 그룹을 그룹 승인자로 할당하기 전에 프로젝트에 대한 액세스를 공유해야 합니다.

사용자가 승인자 그룹의 회원인 경우 개인적으로 승인할 수 있는 능력에 영향을 미칩니다:

  • 상속된 회원은 승인자로 고려되지 않습니다. 오직 직접 회원만이 병합 요청을 승인할 수 있습니다.
  • 그룹 승인자로부터 나중에 _개별 승인자_로 추가된 사용자는 두 개가 아닌 한 개의 승인자로 간주됩니다.
  • 병합 요청 작성자는 기본적으로 자신의 병합 요청에 대한 적격 승인자로 간주되지 않습니다. 이러한 동작을 변경하려면 작성자 승인 방지 프로젝트 설정을 비활성화하세요.
  • 병합 요청에 대한 커미터는 병합 요청을 승인할 수 있습니다. 이러한 동작을 변경하려면 커미터 승인 방지 프로젝트 설정을 활성화하세요.

코드 소유자를 적격 승인자로 설정

저장소에 코드 소유자를 추가하면 파일 소유자가 프로젝트 내에서 적격 승인자가 됩니다. 이 병합 요청 승인 규칙을 활성화하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 요청 승인 섹션에서 승인 규칙 섹션에 있는 모든 적격 사용자 규칙을 찾습니다.
  4. 요구되는 승인 열에 필요한 승인 수를 입력합니다.

보호된 브랜치에 대해 코드 소유자 승인을 요구할 수도 있습니다.

보고자 역할을 가진 사용자에 대한 승인 권한 활성화

보고자 역할을 가진 사용자가 보호된 브랜치에 병합하기 전에, 병합 요청을 승인할 수 있는 권한을 부여해야 할 수 있습니다.

일부 사용자(예: 관리자)는 코드를 푸시하거나 병합할 권한이 필요하지 않을 수 있지만, 제안된 작업에 대한 감독은 필요할 수 있습니다.

전제 조건:

  • 이 방법은 모든 브랜치 또는 모든 보호된 브랜치 설정에서는 작동하지 않으므로 특정 브랜치를 선택해야 합니다.
  • 공유된 그룹은 승인 규칙에 추가해야 하며 개별 사용자가 되어서는 안 됩니다. 추가된 사용자가 그룹의 일원이더라도 마찬가지입니다.

푸시 액세스를 부여하지 않고 이러한 사용자에 대한 승인 권한을 활성화하려면:

  1. 보호된 브랜치를 생성합니다.
  2. 새 그룹을 생성합니다.
  3. 사용자를 그룹에 추가합니다 및 사용자를 위해 보고자 역할을 선택합니다. 알려진 문제로 인해 보고자보다 높은 권한의 역할을 부여하지 마세요. 더 높은 역할을 부여하면 예기치 않은 동작이 발생할 수 있습니다.
  4. 최소한 보고자 역할로 프로젝트와 그룹을 공유합니다.
  5. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  6. 설정 > 병합 요청을 선택합니다.
  7. 병합 요청 승인 섹션에서 승인 규칙 섹션:
    • 새 규칙의 경우 승인 규칙 추가를 선택하고 보호된 브랜치를 지정합니다.
    • 기존 규칙의 경우 편집을 선택하고 보호된 브랜치를 지정합니다.
  8. 오른쪽 사이드바에서 승인자 추가에서 생성한 그룹을 선택합니다.
  9. 변경 사항 저장을 선택합니다.

병합 요청 승인 규칙 수정 또는 재정의

프로젝트에 대한 병합 요청 승인 규칙을 재정의하려면 다음 중 하나를 수행할 수 있습니다:

  • 기존 병합 요청 편집
  • 새 병합 요청 만들기

전제 조건:

  • 관리자 액세스 권한이 있어야 하거나 모두 다음이 참이어야 합니다:
    • 개발자 역할을 보유하고 있거나 프로젝트가 외부 구성원의 기여를 허용해야 합니다.
    • 병합 요청의 작성자가 되어야 합니다.
    • 프로젝트 설정에서 승인 규칙 편집 방지가 비활성화되어야 합니다.

병합 요청의 승인자를 재정의하려면:

  1. 새 병합 요청 만들기시, 승인 규칙 섹션으로 스크롤하여 필요에 따라 원하는 승인 규칙을 추가하거나 제거한 후 병합 요청 만들기를 선택합니다.
  2. 기존 병합 요청을 보기:
    1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
    2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
    3. 편집을 선택합니다.
    4. 승인 규칙 섹션으로 스크롤합니다.
    5. 원하는 승인 규칙을 추가하거나 제거합니다.
    6. 변경 사항 저장을 선택합니다.

관리자는 사용자들이 병합 요청의 승인 규칙을 재정의하지 못하도록 병합 요청 승인 설정을 변경할 수 있습니다.

규칙에 대한 여러 승인 요구

하나의 승인이 아닌 두 개 이상의 승인이 필요한 승인 규칙을 만들려면:

  • 규칙을 생성하거나 편집할 때 필요한 승인2 이상으로 설정합니다.

규칙에 대해 여러 승인을 요구하려면, approvals_required 속성을 2 이상으로 설정하기 위해 API를 사용할 수도 있습니다.

선택적 승인 규칙 구성

병합 요청 승인은 승인이 환영되지만 필수는 아닌 프로젝트에 대해서는 선택적일 수 있습니다. 승인 규칙을 선택적으로 만들려면:

승인 규칙을 선택적으로 만들려면, approvals_required 속성을 0으로 설정하기 위해 API를 사용할 수도 있습니다.

보호된 분기를 위한 승인

  • 모든 보호된 분기 대상 분기 옵션은 GitLab 15.3에서 도입됨.

승인 규칙은 특정 분기와 관련이 있는 경우가 많으며, 기본 분기와 같은 경우가 있습니다. 특정 분기를 위한 승인 규칙을 구성하려면:

  1. 승인 규칙 생성.
  2. 프로젝트로 이동하여 설정 > 병합 요청을 선택합니다.
  3. 병합 요청 승인 섹션에서 승인 규칙으로 스크롤합니다.
  4. 대상 분기:
    • 모든 보호된 분기에 규칙을 적용하려면 모든 보호된 분기를 선택합니다.
    • 특정 분기에 규칙을 적용하려면 목록에서 선택합니다.
  5. 이 구성을 활성화하려면 보호된 분기에서 코드 소유자의 승인을 요구하는 단계를 따릅니다.

보안 승인

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 보안 승인은 GitLab 15.0에 도입된 병합 요청 승인 설정으로 이동되었습니다.
  • 승인을 위한 봇 댓글은 GitLab 16.2에서 도입되었으며, security_policy_approval_notification이라는 플래그를 사용합니다. 기본적으로 활성화되어 있습니다.
  • 승자를 위한 봇 댓글은 GitLab 16.3에서 일반적으로 사용 가능합니다. 기능 플래그 security_policy_approval_notification이 제거되었습니다.

병합 요청 승인 정책을 사용하여 병합 요청 및 기본 브랜치의 취약성 상태에 따라 보안 승인을 정의할 수 있습니다. 각 보안 정책에 대한 세부정보는 병합 요청 구성을 포함한 보안 승인 섹션에 표시됩니다.

보안 승인 규칙은 파이프라인이 완료될 때까지 모든 병합 요청에 적용됩니다. 보안 승인 규칙의 적용은 사용자가 보안 스캔이 실행되기 전에 코드를 병합하지 못하게 합니다. 파이프라인이 완료되면 보안 승인 규칙이 확인되어 보안 승인이 여전히 필요한지 여부를 판단합니다. 파이프라인의 스캐너가 문제가 발견되고 보안 승인이 필요할 경우, 병합 요청에 진행에 필요한 단계를 나타내는 봇 댓글이 생성됩니다.

보안 승인

이러한 정책은 보안 정책 편집기에서 생성 및 편집됩니다.

문제 해결

승인 규칙 이름이 비어 있을 수 없습니다

이 유효성 검사 오류에 대한 우회 방법으로, API를 통해 승인 규칙을 삭제할 수 있습니다.

  1. 프로젝트 수준 규칙 가져오기.
  2. 규칙 삭제하기.

이 유효성 검사 오류에 대한 자세한 내용은 문제 285129를 참조하세요.

그룹은 프로젝트에서 명시적 또는 상속된 개발자 역할이 필요합니다

승인을 처리하기 위해 생성된 그룹이 검토가 필요한 프로젝트의 계층 구조와 다른 영역에 생성될 수 있습니다. 이렇게 되면, 그룹의 구성원이 병합 요청을 승인할 수 없게 됩니다.

예를 들어:

아래의 그룹 구조에서 프로젝트 1은 하위 그룹 1에 속하고, 하위 그룹 4에는 사용자가 있습니다.

예시 시나리오 - 프로젝트 및 그룹 구조

프로젝트 1에는 하위 그룹 4를 승인자로 지정하는 프로젝트 수준 승인 규칙이 있습니다.

병합 요청이 생성될 때 하위 그룹 4의 승인자가 적격 승인자 목록에 나타납니다.

하지만 하위 그룹 4의 사용자가 병합 요청을 볼 수 있는 권한이 없는 관계로 404 오류가 반환됩니다.

구성원을 부여하려면, 그룹이 프로젝트 멤버로 초대되어야 합니다. 이제 하위 그룹 4의 사용자가 승인을 할 수 있게 되었습니다.

프로젝트 멤버 페이지, 하위 그룹 4가 구성원으로 표시됨