GitHub acara webhook - AWS CodeBuild

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

GitHub acara webhook

Anda dapat menggunakan grup filter webhook untuk menentukan peristiwa GitHub webhook mana yang memicu build. Misalnya, Anda dapat menentukan bahwa build hanya dipicu untuk perubahan pada cabang tertentu.

Anda dapat membuat satu atau beberapa grup filter webhook untuk menentukan peristiwa webhook mana yang memicu build. Build dipicu jika grup filter apa pun mengevaluasi true, yang terjadi ketika semua filter dalam grup dievaluasi menjadi true. Saat Anda membuat grup filter, Anda menentukan:

Sebuah acara

Untuk GitHub, Anda dapat memilih satu atau lebih dari acara berikut:PUSH,,PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED,PULL_REQUEST_REOPENED,PULL_REQUEST_MERGED,PULL_REQUEST_CLOSED,RELEASED,PRERELEASED, danWORKFLOW_JOB_QUEUED. Jenis acara webhook ada di X-GitHub-Event header di payload webhook. Di X-GitHub-Event header, Anda mungkin melihat pull_request ataupush. Untuk peristiwa permintaan tarik, jenisnya ada di action bidang payload peristiwa webhook. Tabel berikut menunjukkan bagaimana nilai X-GitHub-Event header dan nilai action bidang payload permintaan tarik webhook memetakan ke jenis acara yang tersedia.

X-GitHub-EventNilai header Nilai action payload acara Webhook Jenis peristiwa
pull_request opened PULL_REQUEST_CREATED
pull_request reopened PULL_REQUEST_REOPENED
pull_request synchronize PULL_REQUEST_UPDATED
pull_request closeddan merged lapangan adalah true PULL_REQUEST_MERGED
pull_request closeddan merged lapangan adalah false PULL_REQUEST_CLOSED
push T/A PUSH
release dirilis RELEASED
release prarilis PRERELEASED
workflow_job mengantri WORKFLOW_JOB_QUEUED
catatan

Jenis PULL_REQUEST_REOPENED acara dapat digunakan dengan GitHub dan GitHub Enterprise Server saja. Jenis RELEASEDPRERELEASED,, dan WORKFLOW_JOB_QUEUED acara GitHub hanya dapat digunakan dengan. Untuk informasi selengkapnya tentang WORKFLOW_JOB_QUEUED, lihat Tutorial: Konfigurasikan CodeBuild pelari GitHub Tindakan yang dihosting sendiri.

Satu atau lebih filter opsional

Gunakan ekspresi reguler untuk menentukan filter. Agar peristiwa memicu build, setiap filter dalam grup yang terkait dengannya harus mengevaluasi ke true.

ACTOR_ACCOUNT_ID(ACTOR_IDdi konsol)

Peristiwa webhook memicu build saat ID akun Server GitHub atau GitHub Enterprise cocok dengan pola ekspresi reguler. Nilai ini ditemukan di id properti sender objek di payload webhook.

HEAD_REF

Peristiwa webhook memicu build saat referensi kepala cocok dengan pola ekspresi reguler (misalnya, refs/heads/branch-name ataurefs/tags/tag-name). Untuk acara push, nama referensi ditemukan di ref properti di payload webhook. Untuk peristiwa permintaan tarik, nama cabang ditemukan di ref properti head objek di payload webhook.

BASE_REF

Peristiwa webhook memicu build saat referensi dasar cocok dengan pola ekspresi reguler (misalnya,refs/heads/branch-name). BASE_REFFilter hanya dapat digunakan dengan peristiwa permintaan tarik. Nama cabang ditemukan di ref properti base objek di payload webhook.

FILE_PATH

Webhook memicu build saat jalur file yang diubah cocok dengan pola ekspresi reguler. FILE_PATHFilter dapat digunakan dengan acara GitHub push and pull request dan GitHub Enterprise Server push events. Itu tidak dapat digunakan dengan peristiwa permintaan tarik Server GitHub Perusahaan.

COMMIT_MESSAGE

Webhook memicu build saat pesan head commit cocok dengan pola ekspresi reguler. COMMIT_MESSAGEFilter dapat digunakan dengan acara GitHub push and pull request dan GitHub Enterprise Server push events. Itu tidak dapat digunakan dengan peristiwa permintaan tarik Server GitHub Perusahaan.

TAG_NAME

Webhook memicu build saat nama tag rilis cocok dengan pola ekspresi reguler. TAG_NAMEFilter dapat digunakan dengan peristiwa permintaan yang GitHub dirilis dan prareleased.

RELEASE_NAME

Webhook memicu build saat nama rilis cocok dengan pola ekspresi reguler. RELEASE_NAMEFilter dapat digunakan dengan peristiwa permintaan yang GitHub dirilis dan prareleased.

WORKFLOW_NAME

Webhook memicu build saat nama alur kerja cocok dengan pola ekspresi reguler. WORKFLOW_NAMEFilter dapat digunakan dengan peristiwa permintaan antrian pekerjaan alur kerja GitHub Actions.

catatan

Anda dapat menemukan payload webhook di pengaturan webhook repositori Anda. GitHub

Filter acara GitHub webhook (konsol)

Di Acara webhook sumber utama, pilih yang berikut ini. Bagian ini hanya tersedia ketika Anda memilih Repositori di GitHub akun saya untuk repositori sumber.

  1. Pilih Bangun ulang setiap kali perubahan kode didorong ke repositori ini saat Anda membuat proyek Anda.

  2. Dari jenis Acara, pilih satu atau beberapa acara.

  3. Untuk memfilter saat peristiwa memicu build, di bawah Memulai build dalam kondisi ini, tambahkan satu atau beberapa filter opsional.

  4. Untuk memfilter saat peristiwa tidak dipicu, di bawah Jangan memulai build dalam kondisi ini, tambahkan satu atau beberapa filter opsional.

  5. Pilih Tambahkan grup filter untuk menambahkan grup filter lain, jika diperlukan.

Untuk informasi selengkapnya, lihat Buat proyek build (konsol) dan WebhookFilterdi Referensi AWS CodeBuild API.

Dalam contoh ini, grup filter webhook memicu build untuk permintaan tarik saja:

Menggunakan contoh dua grup filter webhook, build dipicu ketika salah satu atau keduanya mengevaluasi ke true:

  • Grup filter pertama menentukan permintaan tarik yang dibuat, diperbarui, atau dibuka kembali pada cabang dengan nama referensi Git yang cocok dengan ekspresi reguler ^refs/heads/main$ dan referensi kepala yang cocok. ^refs/heads/branch1$

  • Grup filter kedua menentukan permintaan push pada cabang dengan nama referensi Git yang cocok dengan ekspresi ^refs/heads/branch1$ reguler.

Dalam contoh ini, grup filter webhook memicu build untuk semua permintaan kecuali peristiwa tag.

Dalam contoh ini, grup filter webhook memicu build hanya jika file dengan nama yang cocok dengan ekspresi ^buildspec.* reguler berubah.

Dalam contoh ini, grup filter webhook memicu build hanya ketika file diubah src atau test folder.

Dalam contoh ini, grup filter webhook memicu build hanya jika perubahan dilakukan oleh pengguna Server GitHub Perusahaan tertentu GitHub atau dengan ID akun yang cocok dengan ekspresi reguler. actor-account-id

catatan

Untuk informasi tentang cara menemukan ID GitHub akun Anda, lihat https://api.github.com/users/ nama pengguna, di mana nama pengguna adalah nama pengguna Anda. GitHub

Dalam contoh ini, grup filter webhook memicu build untuk acara push saat pesan head commit cocok dengan ekspresi reguler. \[CodeBuild\]

Dalam contoh ini, grup filter webhook memicu peristiwa pekerjaan alur kerja build for GitHub Actions saja.

catatan

CodeBuild hanya akan memproses pekerjaan alur kerja GitHub Tindakan jika webhook memiliki grup filter yang berisi filter acara WORKFLOW_JOB_QUEUED.

Dalam contoh ini, grup filter webhook memicu build untuk nama alur kerja yang cocok dengan ekspresi reguler. CI-CodeBuild

Filter acara GitHub webhook (SDK)

Untuk menggunakan AWS CodeBuild SDK untuk memfilter peristiwa webhook, gunakan filterGroups bidang dalam sintaks permintaan metode CreateWebhook atau UpdateWebhook API. Untuk informasi selengkapnya, lihat WebhookFilterdi Referensi CodeBuild API.

Untuk membuat filter webhook yang memicu build hanya untuk permintaan tarik, masukkan yang berikut ini ke dalam sintaks permintaan:

"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" } ] ]

Untuk membuat filter webhook yang memicu build hanya untuk cabang tertentu, gunakan pattern parameter untuk menentukan ekspresi reguler untuk memfilter nama cabang. Menggunakan contoh dua grup filter, build dipicu ketika salah satu atau keduanya mengevaluasi ke true:

  • Grup filter pertama menentukan permintaan tarik yang dibuat, diperbarui, atau dibuka kembali pada cabang dengan nama referensi Git yang cocok dengan ekspresi reguler ^refs/heads/main$ dan referensi kepala yang cocok. ^refs/heads/myBranch$

  • Grup filter kedua menentukan permintaan push pada cabang dengan nama referensi Git yang cocok dengan ekspresi ^refs/heads/myBranch$ reguler.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" }, { "type": "BASE_REF", "pattern": "^refs/heads/main$" } ], [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" } ] ]

Anda dapat menggunakan excludeMatchedPattern parameter untuk menentukan peristiwa mana yang tidak memicu build. Misalnya, dalam contoh ini build dipicu untuk semua permintaan kecuali peristiwa tag.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" }, { "type": "HEAD_REF", "pattern": "^refs/tags/.*", "excludeMatchedPattern": true } ] ]

Anda dapat membuat filter yang memicu build hanya jika file dengan nama yang cocok dengan ekspresi reguler dalam pattern argumen berubah. Dalam contoh ini, grup filter menetapkan bahwa build dipicu hanya ketika file dengan nama yang cocok dengan ekspresi reguler ^buildspec.* berubah.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^buildspec.*" } ] ]

Dalam contoh ini, grup filter menetapkan bahwa build dipicu hanya ketika file diubah src atau test folder.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^src/.+|^test/.+" } ] ]

Anda dapat membuat filter yang memicu build hanya jika perubahan dilakukan oleh pengguna Server GitHub Perusahaan tertentu GitHub atau Enterprise dengan ID actor-account-id akun.

catatan

Untuk informasi tentang cara menemukan ID GitHub akun Anda, lihat https://api.github.com/users/ nama pengguna, di mana nama pengguna adalah nama pengguna Anda. GitHub

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" }, { "type": "ACTOR_ACCOUNT_ID", "pattern": "actor-account-id" } ] ]

Anda dapat membuat filter yang memicu build hanya jika pesan head commit cocok dengan ekspresi reguler dalam argumen pola. Dalam contoh ini, grup filter menetapkan bahwa build dipicu hanya jika pesan komit kepala dari peristiwa push cocok dengan ekspresi \[CodeBuild\] reguler.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "COMMIT_MESSAGE", "pattern": "\[CodeBuild\]" } ] ]

Untuk membuat filter webhook yang hanya memicu pekerjaan alur kerja build for GitHub Actions, masukkan yang berikut ini ke dalam sintaks permintaan:

"filterGroups": [ [ { "type": "EVENT", "pattern": "WORKFLOW_JOB_QUEUED" } ] ]

Filter acara GitHub webhook ()AWS CloudFormation

Untuk menggunakan AWS CloudFormation template untuk memfilter peristiwa webhook, gunakan FilterGroups properti AWS CodeBuild proyek. Bagian AWS CloudFormation template yang diformat YAML berikut membuat dua grup filter. Bersama-sama, mereka memicu pembuatan ketika salah satu atau keduanya mengevaluasi ke BETUL:

  • Grup filter pertama menentukan permintaan tarik dibuat atau diperbarui pada cabang dengan nama referensi Git yang cocok dengan ekspresi reguler ^refs/heads/main$ oleh GitHub pengguna yang tidak memiliki ID 12345 akun.

  • Grup filter kedua menentukan permintaan push dibuat pada file dengan nama yang cocok dengan ekspresi reguler READ_ME di cabang dengan nama referensi Git yang cocok dengan ekspresi reguler ^refs/heads/.*.

  • Grup filter ketiga menentukan permintaan push dengan pesan head commit yang cocok dengan ekspresi \[CodeBuild\] reguler.

  • Grup filter keempat menentukan permintaan pekerjaan alur kerja GitHub Tindakan dengan nama alur kerja yang cocok dengan ekspresi reguler. \[CI-CodeBuild\]

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: GITHUB 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 - Type: ACTOR_ACCOUNT_ID Pattern: 12345 ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: HEAD_REF Pattern: ^refs/heads/.* - Type: FILE_PATH Pattern: READ_ME ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: COMMIT_MESSAGE Pattern: \[CodeBuild\] - Type: FILE_PATH Pattern: ^src/.+|^test/.+ - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]