Merge Request 승인 규칙

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

승인 규칙은 Merge Request이 Merge되기 전에 받아야 하는 승인 수 및 어떤 사용자가 승인해야 하는지를 정의합니다. 이는 코드 소유자와 함께 사용될 수 있어 변경 사항이 기능을 유지하는 그룹과 특정 감사 영역을 책임지는 다른 그룹에 의해 검토되도록 보장합니다.

승인 규칙은 다음과 같이 정의할 수 있습니다:

승인 규칙은 다음과 같이 구성할 수 있습니다:

기본 승인 규칙을 정의하지 않으면 어떤 사용자든 Merge Request을 승인할 수 있습니다. 규칙을 정의하지 않더라도 프로젝트의 설정에서 여전히 필요한 승인자의 최소 수를 강제 적용할 수 있습니다.

소스(포크)에서 상위 프로젝트로의 변경이 대상인 경우 대상(상위) 프로젝트의 기본 승인 규칙이 아닌 소스(포크) 프로젝트의 기본 승인 규칙이 사용됩니다.

승인 규칙 추가

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

필수 조건:

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

Merge Request 승인 규칙을 추가하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > Merge Request을 선택합니다.
  3. Merge Request 승인 섹션에서 승인 규칙 섹션에서 승인 규칙 추가를 선택합니다.
  4. 다음 필드를 입력합니다:
    • 필요한 승인, 값이 0이면 규칙이 선택 사항으로 설정됩니다0보다 큰 숫자는 필수 규칙을 생성합니다. 필요한 최대 승인 수는 100입니다.
    • 승인자 추가에서 파일 변경 내용의 이전 작성자를 기반으로 승인자를 선택할 수 있습니다.
  5. 승인 규칙 추가를 선택합니다. 여러 승인 규칙을 추가할 수 있습니다.

승인 규칙의 구성은 새 규칙이 기존 Merge Request에 적용되는지를 결정합니다:

  • 승인 규칙 재정의가 허용된 경우, 이러한 기본 규칙에 대한 변경 사항은 기존 Merge Request에 적용되지 않지만, 대상 브랜치의 변경에는 적용됩니다.
  • 승인 규칙 재정의가 허용되지 않으면 모든 기본 규칙의 변경은 기존 Merge Request에 적용됩니다. 이전에 매뉴얼으로 재정의된 승인 규칙은 허용된 승인 규칙을 변경하지 않습니다.

승인 규칙 편집

필수 조건:

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

Merge Request 승인 규칙을 편집하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > Merge Request을 선택합니다.
  3. Merge Request 승인 섹션에서 승인 규칙 섹션에서 편집하고 싶은 규칙 옆에 편집을 선택합니다.
  4. 다음 필드를 편집합니다:
    • 필요한 승인, 값이 0이면 규칙이 선택 사항으로 설정됩니다0보다 큰 숫자는 필수 규칙을 생성합니다. 필요한 최대 승인 수는 100입니다.
    • 사용자 또는 그룹을 제거하려면 해당 그룹이나 사용자를 식별하고 제거를 선택합니다 ().
  5. 승인 규칙 업데이트를 선택합니다.

승인 규칙 삭제

필수 조건:

  • 프로젝트에 대한 최소한의 유지자 역할이 있어야 합니다.

Merge Request 승인 규칙을 삭제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > Merge Request을 선택합니다.
  3. Merge Request 승인 섹션에서 삭제하려는 규칙 옆에 휴지통 아이콘을 선택합니다 ().
  4. 승인자 제거를 선택합니다.

다중 승인 규칙

Merge Request에 여러 승인 규칙을 강제로 적용하려면 프로젝트에 여러 기본 승인 규칙을 추가하세요.

승인 가능한 승인자가 Merge Request을 승인하면 해당 승인자가 속한 모든 규칙의 필요한 승인 열에 남은 승인 수가 감소됩니다:

Merge Request 승인 위젯

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

승인 가능한 승인자

프로젝트에서 승인자로서 승인 가능하려면 사용자는 다음 중 하나의 멤버여야 합니다:

개발자 역할을 가진 사용자는 다음 중 하나의 조건이 해당되면 Merge Request을 승인할 수 있습니다:

  • 프로젝트나 Merge Request 수준에서 승인자로 추가된 사용자.
  • 파일에 대한 코드 소유자.

리포터 역할을 가진 사용자는 다음 두 가지 조건이 동시에 해당되면 승인할 수 있습니다:

  • 사용자가 프로젝트와 공유된 그룹의 일부인 경우입니다. 그룹은 적어도 리포터 역할을 가져야 합니다.
  • 그룹이 Merge Request 승인자로 추가되었습니다.

자세한 지침은 리포터 역할 사용자를 위한 Merge Request 승인 책임 분리를 참조하세요.

Merge Request 검토에 참여한 사용자를 표시하려면 Merge Request의 승인 위젯에서 댓글 단 사용자 열이 표시됩니다. 이 열은 해당 Merge Request의 내용에 대한 질문을 할 사용자를 식별하는 데 도움이 됩니다.

필요한 승인 수가 할당된 승인자 수보다 많은 경우 프로젝트에서 적어도 개발자 역할을 가진 다른 사용자의 승인도 필요한 승인 수를 충족하는 데 도움이 됩니다. 이는 해당 사용자가 승인 규칙에 명시적으로 나열되지 않았더라도 해당됩니다.

그룹 승인자

사용자 그룹을 승인자로 추가할 수 있습니다. 이 그룹의 직접 멤버는 모두 해당 규칙을 승인할 수 있습니다. 상속된 멤버는 해당 규칙을 승인할 수 없습니다.

일반적으로 해당 그룹은 최상위 네임스페이스의 하위 그룹이나, 외부 그룹과 협업하는 경우입니다. 외부 그룹과 협업하는 경우 프로젝트에 프로젝트 공유를 할당한 후 그룹을 그룹 승인자로 할당해야 합니다.

승인자 그룹의 사용자 멤버십은 다음과 같은 방식으로 개인적인 승인 능력에 영향을 줍니다:

  • 상속된 멤버는 승인자로 간주되지 않습니다. 직접 멤버만 Merge Request을 승인할 수 있습니다.
  • 승인자 그룹에서 사용자가 나중에 개별적인 승인자로도 추가된 경우 해당 사용자는 두 명이 아닌 한 명으로 간주됩니다.
  • Merge Request 작성자는 기본적으로 자신의 Merge Request에서 승인자로 간주되지 않습니다. 이 동작을 변경하려면 작성자 승인 방지 프로젝트 설정을 비활성화하세요.
  • Merge Request의 커미터는 이 병행을 변경할 수 있습니다. 이 동작을 변경하려면 커미터 승인 방지 프로젝트 설정을 활성화하세요.

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

만약 리포지터리에 코드 소유자를 추가하면, 파일 소유자는 프로젝트에서 적격 승인자로 지정됩니다. 이 Merge Request 승인 규칙을 활성화하려면 다음을 수행하십시오:

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

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

Reporter 역할을 가진 사용자의 승인 권한 활성화

보호된 브랜치로 Merge하려면 Reporter 역할을 가진 사용자에게 Merge Request을 승인할 수 있는 권한을 부여해야 할 수 있습니다. 일부 사용자(예: 매니저)는 코드를 푸시하거나 Merge할 필요가 없지만 제안된 작업에 대한 감독이 필요할 수 있습니다.

전제 조건:

  • ‘모든 브랜치’ 또는 ‘모든 보호된 브랜치’ 설정과는 호환되지 않으므로 특정 브랜치를 선택해야 합니다.
  • 추가된 사용자가 그룹의 일부여도, 개별 사용자가 아닌 승인 규칙에 그 공유 그룹을 추가해야 합니다.

이러한 사용자의 승인 권한을 허용하려면 다음을 수행하십시오:

  1. 보호된 브랜치를 생성합니다.
  2. 새 그룹을 생성합니다.
  3. 사용자를 그룹에 추가하고, 사용자의 Reporter 역할을 선택합니다.
  4. 프로젝트를 생성한 그룹과 함께 프로젝트를 공유하며, 적어도 Reporter 역할을 부여합니다.
  5. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  6. 설정 > Merge Request을 선택합니다.
  7. Merge Request 승인 섹션에서 승인 규칙 섹션:
    • 새 규칙의 경우, 승인 규칙 추가를 선택하고 보호된 브랜치를 대상으로 합니다.
    • 기존 규칙의 경우, 편집을 선택하고 보호된 브랜치를 대상으로 합니다.
  8. 승인자 추가에서 생성한 그룹을 선택합니다.
  9. 승인 규칙 추가 또는 승인 규칙 업데이트를 선택합니다.

Merge Request 승인 규칙 수정 또는 재정의

프로젝트의 Merge Request 승인 규칙을 재정의하거나 다음 중 하나를 수행하여 변경할 수 있습니다:

  • 기존 Merge Request을 편집합니다.
  • 새 Merge Request을 생성합니다.

전제 조건:

  • 관리자 액세스가 필요하거나 다음이 모두 참이어야 합니다:
    • 최소한의 Developer 역할을 가지고 있거나, 프로젝트가 외부 구성원의 기여를 허용해야 합니다.
    • Merge Request의 저자여야 합니다.
    • 프로젝트 설정 Merge Request에서 승인 규칙 편집 방지이 비활성화되어 있어야 합니다.

Merge Request의 승인자를 재정의하려면 다음을 수행하십시오:

  1. 새 Merge Request을 생성할 때 승인 규칙 섹션으로 스크롤하여 Merge Request 생성을 선택하기 전에 희망하는 승인 규칙을 추가하거나 제거합니다.
  2. 기존 Merge Request을 보고 있을 때:
    1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
    2. 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
    3. 편집을 선택합니다.
    4. 승인 규칙 섹션으로 스크롤합니다.
    5. 원하는 승인 규칙을 추가하거나 제거합니다.
    6. 변경 사항 저장을 선택합니다.

관리자는 Merge Request 승인 설정을 변경하여 사용자가 Merge Request의 승인 규칙을 재정의하는 것을 방지할 수 있습니다.

규칙에 대한 복수의 승인 요구

두 개 이상의 승인이 필요한 승인 규칙을 생성하려면:

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

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

선택적 승인 규칙 구성

Merge Request 승인은 승인이 필요하지만 필수가 아닌 프로젝트에서 선택적일 수 있습니다. 선택적 승인 규칙을 만들려면:

선택적 승인 규칙을 만드는 데 API를 사용하여 approvals_required 속성을 0으로 설정할 수도 있습니다.

보호된 브랜치에 대한 승인

승인 규칙은 종종 기본 브랜치(예: 기본 브랜치)와 같은 특정 브랜치에만 관련이 있습니다. 특정 브랜치에 대한 승인 규칙을 구성하려면 다음을 수행하십시오:

  1. 승인 규칙을 생성합니다.
  2. 프로젝트로 이동하여 설정 > Merge Request을 선택합니다.
  3. Merge Request 승인 섹션으로 스크롤하여 승인 규칙으로 이동합니다.
  4. 대상 브랜치에서:
    • 모든 보호된 브랜치에 규칙을 적용하려면 모든 보호된 브랜치를 선택합니다.
    • 특정 브랜치에 규칙을 적용하려면 디렉터리에서 해당 브랜치를 선택합니다.
  5. 이 구성을 활성화하려면 보호된 브랜치에서 코드 소유자 승인을 요청을 따릅니다.

보안 승인

Tier: Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated
  • GitLab 15.0에서 도입된 Merge Request 승인 설정에 보안 승인이 추가되었습니다.
  • 16.2 버전에서 도입된 보안 승인을 위한 로봇 코멘트는 security_policy_approval_notification이라는 플래그와 함께 도입되었습니다. 기본적으로 활성화됩니다.
  • 16.3 버전에서 보안 승인을 위한 로봇 코멘트가 일반적으로 사용 가능해졌습니다. security_policy_approval_notification 피처 플래그가 제거되었습니다.

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

보안 승인 규칙은 파이프라인이 완료될 때까지 모든 Merge Request에 적용됩니다. 보안 승인 규칙의 적용은 보안 검사가 실행되기 전에 사용자가 코드를 Merge하는 것을 방지합니다. 파이프라인이 완료된 후 보안 승인 규칙은 여전히 필요한지 확인하기 위해 확인됩니다. 파이프라인의 스캐너가 문제를 식별하고 보안 승인이 필요한 경우, Merge Request에 관련된 로봇 코멘트가 생성됩니다.

Security Approvals

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

드로어(Drawer)에서 승인 규칙 편집

상태: 베타
  • 16.11 버전에서 도입된 드로어(Drawer)에서 승인 규칙 편집 기능은 기본적으로 활성화됩니다. 이 기능은 베타 상태입니다.

플래그: 자체 호스팅된 GitLab에서는 기본적으로 이 기능을 사용할 수 있습니다. 기능을 숨기려면 관리자가 이름이 approval_rules_drawer피처 플래그를 비활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 있습니다.

이 기능이 활성화되면, 새로운 승인 규칙을 추가하거나 편집할 때 오른쪽의 드로어(Drawer)에서 대화상자가 열립니다.

문제 해결

승인 규칙 이름을 비워둘 수 없음

이 유효성 검사 오류의 해결책으로 API를 통해 승인 규칙을 삭제할 수 있습니다.

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

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

그룹은 명시적으로 또는 상속된 Developer 권한이 필요합니다

승인을 처리하기 위해 만든 그룹이 심사가 필요한 프로젝트가 있는 프로젝트 계층 구조의 다른 영역에 만들어질 수 있습니다. 이런 경우, 해당 그룹의 구성원들은 해당 프로젝트에 액세스할 수 없기 때문에 Merge Request을 승인할 수 없을 수 있습니다.

예를 들어:

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

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

프로젝트 1에는 프로젝트 수준의 승인 규칙이 있으며, 이 규칙은 하위 그룹 4를 승인자로 지정합니다. Merge Request이 생성되면, 하위 그룹 4의 사용자가 승인자 디렉터리에 표시됩니다. 그러나 하위 그룹 4의 사용자들이 Merge Request을 볼 수 있는 권한이 없기 때문에 404 오류가 반환됩니다. 그룹 멤버십을 부여하려면, 그룹을 프로젝트 구성원으로 초대해야 합니다. 이제 하위 그룹 4의 사용자들이 승인할 수 있습니다.

하위 그룹 4가 구성원으로 나열된 프로젝트 구성원 페이지