병합 요청 승인 규칙

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

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

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

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

기본 승인 규칙을 정의하지 않으면 기본 승인 규칙 추가가 필요합니다. 규칙을 정의하지 않더라도 프로젝트 설정에서 필요한 승인자의 최소 수를 강제할 수 있습니다.

소스(포크)에서 상위 프로젝트로의 병합 요청과 같이 다른 프로젝트를 대상으로 하는 병합 요청은 소스(포크) 프로젝트가 아닌 대상(상위) 프로젝트의 기본 승인 규칙을 사용합니다.

승인 규칙 추가

  • GitLab 15.3에서 보호된 브랜치용 승인 규칙이 도입되었습니다.

필수 사항:

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

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

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 요청 승인 섹션에서 승인 규칙 섹션에서 승인 규칙 추가를 선택합니다.
  4. 다음과 같은 필드를 작성합니다:
    • 필요한 승인 수에서 0의 값은 선택적인 규칙을 설정하며 0보다 큰 숫자는 필수 규칙을 생성합니다. 필요한 승인의 최대 수는 100입니다.
    • 승인자 추가에서 파일 변경 내용의 이전 작성자를 기반으로 GitLab이 승인자를 제안합니다.
  5. 승인 규칙 추가를 선택합니다. 다중 승인 규칙을 추가할 수 있습니다.

귀하의 승인 규칙 구성은 승인 규칙 재정의에 따라 적용 여부를 결정합니다:

  • 승인 규칙 재정의가 허용되는 경우, 기본 규칙에 대한 변경사항은 기존 병합 요청에 적용되지 않습니다. 단, 규칙의 대상 브랜치에 대한 변경은 제외됩니다.
  • 승인 규칙 재정의가 허용되지 않는 경우, 기본 규칙에 대한 모든 변경사항이 기존 병합 요청에 적용됩니다. 승인 규칙 재정의가 허용되는 기간 동안 수동으로 재정의된 승인 규칙은 수정되지 않습니다.

승인 규칙 편집

필수 사항:

  • 프로젝트에 대한 최소한의 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를 사용할 수도 있습니다.

선택적 승인 규칙 구성

병합 요청 승인은 승인은 필수가 아니지만 필요한 경우, 해당 프로젝트에서는 선택적일 수 있습니다. 선택적 승인 규칙을 만들려면:

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

보호된 브랜치에 대한 승인

  • GitLab 15.3에서 도입된 모든 보호된 브랜치 대상 브랜치 옵션입니다.

승인 규칙은 종종 기본 브랜치(../../repository/branches/default.md)와 같은 특정 브랜치에 대해서만 관련이 있습니다. 특정 브랜치에 대한 승인 규칙을 구성하려면 다음을 수행합니다.

  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를 참조하세요.

그룹이 프로젝트에 명시적 또는 상속된 Developer 역할이 필요합니다

승인을 처리하기 위해 생성된 그룹은 리뷰가 필요한 프로젝트보다 프로젝트 계층 구조의 다른 영역에 생성될 수 있습니다. 이 경우 그룹 구성원은 해당 프로젝트에 액세스 권한이 없기 때문에 병합 요청을 승인할 수 없을 수 있습니다.

예를 들어:

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

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

프로젝트 1에는 하위 그룹 4를 승인자로 지정하는 프로젝트 수준 승인 규칙이 있습니다. 병합 요청을 생성하면 하위 그룹 4의 승인자가 적합한 승인자 목록에 나타납니다. 그러나 하위 그룹 4의 사용자는 병합 요청을 보기 위한 권한이 없기 때문에 404 오류가 반환됩니다. 구성원 권한을 부여하려면, 그룹을 프로젝트 구성원으로 초대해야 합니다. 이제부터 하위 그룹 4의 사용자가 승인할 수 있습니다.

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