

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 풀 요청 설명 승인
<a name="pull-request-build-policy"></a>

CodeBuild는 풀 요청에 의해 트리거되는 빌드에 대한 추가 제어를 제공하는 풀 요청 빌드 정책을 지원합니다. 변경 사항을 검토할 수 있을 때까지 알 수 없는 사용자의 풀 요청을 자동으로 빌드하지 않을 수 있습니다. 이 기능을 사용하면 팀원 중 한 명이 먼저 코드를 검토한 다음 파이프라인을 실행하도록 요구할 수 있습니다. 이는 일반적으로 알 수 없는 기여자가 제출한 코드를 빌드할 때 보안 조치로 사용됩니다.

풀 요청 빌드 정책을 사용하면 CodeBuild가 기여자의 권한 및 승인 상태에 따라 풀 요청에 대한 빌드를 트리거하는 시기를 제어할 수 있습니다. 이는 퍼블릭 리포지토리 또는 외부 공동 작업자의 기여를 수락하는 리포지토리에 특히 중요합니다.

이 기능을 활성화하면 다음 중 하나에 해당하는 경우에만 풀 요청에 대해 빌드가 트리거됩니다.
+ 풀 요청이 신뢰할 수 있는 기여자에 의해 생성됩니다.
+ 신뢰할 수 있는 기여자가 특정 설명을 게시하여 풀 요청을 승인합니다.

## 작동 방식
<a name="pull-request-build-policy.how-it-works"></a>

**신뢰할 수 있는 기여자**  
신뢰할 수 있는 기여자는 소스 제어 시스템의 현재 역할이 풀 요청 기반 정책에서 승인자 역할로 설정된 사용자입니다. 신뢰할 수 있는 기여자가 풀 요청을 생성하면 CodeBuild는 빌드를 자동으로 트리거하여 현재 동작을 유지합니다.

**신뢰할 수 없는 기여자**  
신뢰할 수 없는 기여자는 승인자 역할 목록에 역할이 설정되지 않은 사용자입니다. 신뢰할 수 없는 기여자가 풀 요청을 생성하는 경우:  

1. CodeBuild는 '빌드를 시작하는 데 풀 요청 승인 필요'라는 메시지와 함께 빌드 상태를 '실패'로 표시합니다.

1. 신뢰할 수 있는 기여자는 변경 사항을 검토하고 `/codebuild_run(<SHA_OF_THE_LATEST_COMMIT>)`과 함께 설명을 게시하여 빌드를 트리거해야 합니다. 예를 들어 `/codebuild_run(046e8b67481d53bdc86c3f6affdd5d1afae6d369)`입니다.

1. CodeBuild는 해설자의 권한을 검증하고 승인된 경우 빌드를 트리거합니다.

1. 빌드 결과는 풀 요청 페이지에 다시 보고됩니다.

**설명 승인 구문**  
신뢰할 수 있는 기여자는 다음 설명 형식을 사용하여 빌드를 승인할 수 있습니다.  
+ `/codebuild_run(046e8b67481d53bdc86c3f6affdd5d1afae6d369)` - 지정된 커밋 SHA에서 빌드를 트리거합니다.

## 구성
<a name="pull-request-build-policy.configuration"></a>

**기본 동작**  
풀 요청 빌드 정책은 새로 생성된 모든 CodeBuild 프로젝트에 대해 기본적으로 활성화됩니다.

**API 파라미터**  
풀 요청 빌드 정책은 다음 작업의 `PullRequestBuildPolicy` 파라미터를 사용하여 구성됩니다.  
+ `CreateWebhook`
+ `UpdateWebhook`

**`PullRequestBuildPolicy` 구조**  

```
{
    "requiresCommentApproval": "string",
    "approverRoles": ["string", ...]
}
```

**`requiresCommentApproval`**  
풀 요청에 대한 빌드를 트리거하기 전에 설명 기반 승인이 필요한 시기를 지정합니다. 이 설정은 빌드가 자동으로 실행되는지, 아니면 설명을 통한 명시적 승인이 필요한지를 결정합니다.  
유형: 문자열  
유효한 값:  
+ `DISABLED` - 설명 승인 없이 트리거를 자동으로 빌드합니다.
+ `FORK_PULL_REQUESTS` - 포크된 리포지토리의 풀 요청만 설명 승인이 필요합니다(기여자가 승인자 역할 중 하나가 아닌 경우).
+ `ALL_PULL_REQUESTS` - 모든 풀 요청은 빌드를 실행하기 전에 설명 승인이 필요합니다(기여자가 승인자 역할 중 하나가 아닌 경우). 이것이 기본값입니다.

**`approverRoles`**  
설명 승인이 필요한 경우 풀 요청 빌드에 대한 승인 권한이 있는 리포지토리 역할 목록입니다. 이러한 역할을 가진 사용자만 유효한 설명 승인을 제공할 수 있습니다. 풀 요청 기여자가 이러한 역할 중 하나인 경우 풀 요청 빌드가 자동으로 트리거됩니다.  
유형: 문자열 배열  
GitHub 프로젝트의 유효한 값(값은 GitHub 역할에 매핑됨):  
+ `GITHUB_ADMIN` - 리포지토리 관리자
+ `GITHUB_MAINTAIN` - 리포지토리 유지 관리자
+ `GITHUB_WRITE` - 쓰기 권한이 있는 사용자
+ `GITHUB_TRIAGE` - 분류 권한이 있는 사용자
+ `GITHUB_READ` - 읽기 권한이 있는 사용자
+ 기본값: `["GITHUB_ADMIN", "GITHUB_MAINTAINER", "GITHUB_WRITE"]`
GitLab 프로젝트의 유효한 값(값은 GitLab 역할에 매핑됨):  
+ `GITLAB_OWNER` - 리포지토리 소유자
+ `GITLAB_MAINTAINER` - 리포지토리 유지 관리자
+ `GITLAB_DEVELOPER` - 개발자 권한이 있는 사용자
+ `GITLAB_REPORTER` - 보고자 권한이 있는 사용자
+ `GITLAB_PLANNER` - 기획자 권한이 있는 사용자
+ `GITLAB_GUEST ` - 게스트 권한이 있는 사용자
+ 기본값: `["GITLAB_OWNER", "GITLAB_MAINTAINER", "GITLAB_DEVELOPER"]`
Bitbucket 프로젝트의 유효한 값(값은 Bitbucket 역할에 매핑됨):  
+ `BITBUCKET_ADMIN ` - 리포지토리 관리자
+ `BITBUCKET_WRITE` - 쓰기 권한이 있는 사용자
+ `BITBUCKET_READ ` - 읽기 권한이 있는 사용자
+ 기본값: `["BITBUCKET_ADMIN", "BITBUCKET_WRITE"]`

## 예제
<a name="pull-request-build-policy.examples"></a>

**모든 풀 요청에 대한 설명 승인 활성화**  
 AWS CodeBuild SDK를 사용하여 웹후크에 대한 풀 요청 빌드 정책을 활성화하거나 비활성화하려면 `CreateWebhook` 또는 `UpdateWebhook` API 메서드의 요청 구문에서 `pullRequestBuildPolicy` 필드를 사용합니다. 자세한 내용은 *CodeBuild API 참조*의 [WebHookFilter](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html)를 참조하세요.  
GitHub에서 관리, 유지 관리 및 쓰기 역할을 가진 사용자는 신뢰할 수 있는 기여자로 처리됩니다.  

```
"pullRequestBuildPolicy": {
    "requiresCommentApproval": "ALL_PULL_REQUESTS",
    "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAIN", "GITHUB_WRITE"]
}
```

**리포지토리 관리자 및 유지 관리자에 대해서만 설명 승인 활성화**  
GitHub에서 관리, 유지 관리 역할을 가진 사용자는 신뢰할 수 있는 기여자로 처리됩니다.  

```
"pullRequestBuildPolicy": {
    "requiresCommentApproval": "FORK_PULL_REQUESTS",
    "approverRoles": ["GITHUB_ADMIN", "GITHUB_MAINTAINER"]
}
```

**설명 승인 비활성화**  

```
"pullRequestBuildPolicy": { 
    "requiresCommentApproval": "DISABLED"
}
```

## AWS CloudFormation
<a name="pull-request-build-policy.cloudformation"></a>

 AWS CloudFormation 템플릿을 사용하여 웹후크에 대한 풀 요청 빌드 정책을 활성화하거나 비활성화하려면 PullRequestBuildPolicy 속성을 사용합니다. AWS CloudFormation 템플릿의 다음 YAML 형식 부분은 모든 풀 요청에 대해 풀 요청 빌드 정책이 활성화된 웹후크가 있는 프로젝트를 생성합니다. 유지 관리 및 관리 역할은 승인자로 지정됩니다.

```
CodeBuildProject:
  Type: AWS::CodeBuild::Project
  Properties:
    Name: MyProject
    ServiceRole: service-role
    Artifacts:
      Type: NO_ARTIFACTS
    Environment:
      Type: LINUX_CONTAINER
      ComputeType: BUILD_GENERAL1_SMALL
      Image: aws/codebuild/standard:5.0
    Source:
      Type: BITBUCKET
      Location: source-location
    Triggers:
      Webhook: true
      FilterGroups:
        - - Type: EVENT
            Pattern: PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED
          - Type: BASE_REF
            Pattern: ^refs/heads/main$
            ExcludeMatchedPattern: false
      PullRequestBuildPolicy:
        RequiresCommentApproval: ALL_PULL_REQUESTS
        ApproverRoles:
          - GITHUB_MAINTAIN
          - GITHUB_ADMIN
```

## 콘솔 구성
<a name="pull-request-build-policy.console"></a>

 AWS 관리 콘솔을 사용하여 웹후크 이벤트를 필터링하려면:

1. **설명 승인**에서 모든 풀 요청(`ALL_PULL_REQUEST`)에 대해 비활성화 또는 활성화를 선택하거나 포크의 풀 요청(`FORK_PULL_REQUEST`)에 대해서만 비활성화 또는 활성화를 선택합니다.

1. **승인자 역할**에서 설명 승인이 필요할 때 풀 요청 빌드에 대한 승인 권한이 있는 리포지토리 역할을 선택합니다.

자세한 내용은 *CodeBuild API 참조*의 [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console) 및 [WebhookFilter](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html)를 참조하세요.

![\[설명 승인이 있는 기본 소스 웹후크 이벤트 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/pull-request-comment-approval.png)
