

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Persetujuan komentar permintaan tarik
<a name="pull-request-build-policy"></a>

CodeBuild mendukung kebijakan pembuatan permintaan tarik yang memberikan kontrol tambahan atas build yang dipicu oleh permintaan tarik. Anda mungkin tidak ingin secara otomatis membuat permintaan tarik dari pengguna yang tidak dikenal sampai perubahannya dapat ditinjau. Fitur ini memungkinkan Anda untuk meminta salah satu anggota tim Anda untuk terlebih dahulu meninjau kode dan kemudian menjalankan pipeline. Ini biasanya digunakan sebagai langkah keamanan ketika membangun kode yang diajukan oleh kontributor yang tidak dikenal.

Kebijakan pembuatan permintaan tarik memungkinkan Anda mengontrol kapan CodeBuild memicu build untuk permintaan tarik berdasarkan izin dan status persetujuan kontributor. Ini sangat penting untuk repositori publik atau repositori yang menerima kontribusi dari kolaborator eksternal.

Saat diaktifkan, fitur ini memastikan bahwa build hanya dipicu untuk permintaan tarik ketika:
+ Permintaan tarik dibuat oleh kontributor tepercaya.
+ Kontributor tepercaya menyetujui permintaan tarik dengan memposting komentar tertentu.

## Cara kerjanya
<a name="pull-request-build-policy.how-it-works"></a>

**Kontributor tepercaya**  
Kontributor tepercaya adalah pengguna yang perannya saat ini dalam sistem kontrol sumber ditetapkan dalam kebijakan berbasis permintaan tarik sebagai peran pemberi persetujuan. Ketika kontributor tepercaya membuat permintaan tarik, CodeBuild memicu build secara otomatis, mempertahankan perilaku saat ini.

**Kontributor yang tidak dipercaya**  
Kontributor yang tidak tepercaya adalah pengguna yang perannya tidak ditetapkan dalam daftar peran pemberi persetujuan. Saat kontributor yang tidak tepercaya membuat permintaan tarik:  

1. CodeBuild menandai status build sebagai “Gagal” dengan pesan “Persetujuan permintaan tarik diperlukan untuk memulai build”.

1. Kontributor tepercaya harus meninjau perubahan dan mengirim komentar `/codebuild_run({{<SHA_OF_THE_LATEST_COMMIT>}})` untuk memicu build. Misalnya, `/codebuild_run({{046e8b67481d53bdc86c3f6affdd5d1afae6d369}})`.

1. CodeBuild memvalidasi izin komentator dan memicu build jika disetujui.

1. Hasil build dilaporkan kembali di halaman permintaan tarik.

**Sintaks persetujuan komentar**  
Kontributor tepercaya dapat menyetujui build menggunakan format komentar berikut:  
+ `/codebuild_run({{046e8b67481d53bdc86c3f6affdd5d1afae6d369}})`- Pemicu dibangun di atas komit SHA yang ditentukan.

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

**Perilaku default**  
Kebijakan pembuatan permintaan tarik diaktifkan secara default untuk semua CodeBuild proyek yang baru dibuat.

**Parameter API:**  
Kebijakan pembuatan permintaan tarik dikonfigurasi menggunakan `PullRequestBuildPolicy` parameter dalam tindakan berikut:  
+ `CreateWebhook`
+ `UpdateWebhook`

**`PullRequestBuildPolicy`struktur**  

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

**`requiresCommentApproval`**  
Menentukan kapan persetujuan berbasis komentar diperlukan sebelum memicu pembuatan permintaan tarik. Pengaturan ini menentukan apakah build berjalan secara otomatis atau memerlukan persetujuan eksplisit melalui komentar.  
Tipe: String  
Nilai valid:  
+ `DISABLED`- Membangun pemicu secara otomatis tanpa memerlukan persetujuan komentar.
+ `FORK_PULL_REQUESTS`- Hanya permintaan tarik dari repositori bercabang yang memerlukan persetujuan komentar (kecuali kontributor adalah salah satu peran penyetujui).
+ `ALL_PULL_REQUESTS`- Semua permintaan tarik memerlukan persetujuan komentar sebelum build dijalankan (kecuali kontributor adalah salah satu peran pemberi persetujuan). Ini adalah nilai default.

**`approverRoles`**  
Daftar peran repositori yang memiliki hak persetujuan untuk pembuatan permintaan tarik saat persetujuan komentar diperlukan. Hanya pengguna dengan peran ini yang dapat memberikan persetujuan komentar yang valid. Jika kontributor pull request adalah salah satu peran ini, build pull request mereka akan dipicu secara otomatis.   
Tipe: Array string  
Nilai yang valid untuk GitHub proyek (nilai-nilai dipetakan ke GitHub peran):  
+ `GITHUB_ADMIN`- Administrator repositori
+ `GITHUB_MAINTAIN`- Pengelola repositori
+ `GITHUB_WRITE`- Pengguna dengan izin menulis
+ `GITHUB_TRIAGE`- Pengguna dengan izin triage
+ `GITHUB_READ`- Pengguna dengan izin baca
+ Default: `["GITHUB_ADMIN", "GITHUB_MAINTAIN", "GITHUB_WRITE"]`
Nilai yang valid untuk GitLab proyek (nilai-nilai dipetakan ke GitLab peran):  
+ `GITLAB_OWNER`- Pemilik repositori
+ `GITLAB_MAINTAINER`- Pengelola repositori
+ `GITLAB_DEVELOPER`- Pengguna dengan izin pengembang
+ `GITLAB_REPORTER`- Pengguna dengan izin reporter
+ `GITLAB_PLANNER`- Pengguna dengan izin perencana
+ `GITLAB_GUEST `- Pengguna dengan izin tamu
+ Default: `["GITLAB_OWNER", "GITLAB_MAINTAINER", "GITLAB_DEVELOPER"]`
Nilai yang valid untuk proyek Bitbucket (nilai-nilai dipetakan ke peran Bitbucket):  
+ `BITBUCKET_ADMIN `- Administrator repositori
+ `BITBUCKET_WRITE`- Pengguna dengan izin menulis
+ `BITBUCKET_READ `- Pengguna dengan izin baca
+ Default: `["BITBUCKET_ADMIN", "BITBUCKET_WRITE"]`

**Peran GitHub Perusahaan Kustom**  
CodeBuild memet GitHub akan peran repositori khusus Enterprise (GHE) ke `GITHUB_*` nilai standar berdasarkan tingkat izin tertinggi yang diberikan untuk peran kustom. CodeBuild mengevaluasi izin dari hak istimewa tertinggi ke terendah, dan izin pertama yang diaktifkan menentukan peran yang dipetakan.  
+ `admin` → `GITHUB_ADMIN`
+ `maintain` → `GITHUB_MAINTAIN`
+ `push`(tulis) → `GITHUB_WRITE`
+ `triage` → `GITHUB_TRIAGE`
+ `pull`(baca) → `GITHUB_READ`
Misalnya, peran khusus yang memberikan keduanya `push` dan `triage` izin dipetakan ke `GITHUB_WRITE` karena `push` memiliki hak istimewa yang lebih tinggi daripada`triage`.  
Jika peran kustom tidak memiliki izin yang diakui (admin, maintenance, push, triage, pull all dinonaktifkan), pengguna tidak cocok dengan peran penyetujui apa pun dan diperlakukan sebagai kontributor yang tidak tepercaya.  
Peran GitHub standar (Admin, Maintain, Write, Triage, Read) dipetakan langsung ke `GITHUB_*` nilai yang sesuai tanpa resolusi berbasis izin.

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

**Aktifkan persetujuan komentar untuk semua permintaan tarik**  
Untuk menggunakan AWS CodeBuild SDK untuk mengaktifkan atau menonaktifkan kebijakan Pull Request Build untuk webhook, gunakan `pullRequestBuildPolicy` bidang dalam sintaks permintaan metode `UpdateWebhook` API `CreateWebhook` or. Untuk informasi selengkapnya, lihat [WebhookFilter](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html) di dalam *Referensi API CodeBuild *.   
Pengguna dengan GitHub peran Admin, Maintain, dan Write akan diperlakukan sebagai kontributor tepercaya.  

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

**Aktifkan persetujuan komentar hanya untuk admin dan pengelola repositori**  
Pengguna dengan GitHub peran Admin dan Maintain akan diperlakukan sebagai kontributor tepercaya.  

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

**Nonaktifkan persetujuan komentar**  

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

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

Untuk menggunakan AWS CloudFormation template untuk mengaktifkan atau menonaktifkan kebijakan Pull Request Build untuk webhook, gunakan PullRequestBuildPolicy properti. Bagian AWS CloudFormation template berikut YAML-formatted membuat proyek dengan webhook yang mengaktifkan Kebijakan Pembuatan Permintaan Pull untuk semua permintaan tarik. Peran Pertahankan dan Admin ditentukan sebagai pemberi persetujuan.

```
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
```

## Konfigurasi konsol
<a name="pull-request-build-policy.console"></a>

Untuk menggunakan AWS Management Console untuk memfilter peristiwa webhook:

1. Untuk persetujuan ** Komentar**, pilih dinonaktifkan atau diaktifkan untuk semua pull request (`ALL_PULL_REQUEST`) atau hanya untuk permintaan tarik dari fork (`FORK_PULL_REQUEST`).

1. Untuk peran ** Approver**, pilih peran repositori yang memiliki hak istimewa persetujuan untuk build permintaan tarik saat persetujuan komentar diperlukan.

Untuk informasi selengkapnya, lihat [Membuat proyek build (konsol)](create-project.md#create-project-console) dan [ WebhookFilter ](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html) di Refer * CodeBuild ensi API*.

![Konsol acara webhook sumber utama dengan persetujuan komentar.](https://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/pull-request-comment-approval.png)
