View a markdown version of this page

Persetujuan komentar permintaan tarik - AWS CodeBuild

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

Persetujuan komentar permintaan tarik

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

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”.

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

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

  4. 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

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

PullRequestBuildPolicystruktur
{ "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.

  • adminGITHUB_ADMIN

  • maintainGITHUB_MAINTAIN

  • push(tulis) → GITHUB_WRITE

  • triageGITHUB_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 daripadatriage.

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

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

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

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).

  2. 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) dan WebhookFilter di Refer CodeBuild ensi API.

Konsol acara webhook sumber utama dengan persetujuan komentar.