GitLab acara webhook - AWS CodeBuild

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

GitLab acara webhook

Anda dapat menggunakan grup filter webhook untuk menentukan peristiwa GitLab 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 GitLab, Anda dapat memilih satu atau beberapa acara berikut:

  • PUSH

  • PULL_REQUEST_CREATED

  • PULL_REQUEST_UPDATED

  • PULL_REQUEST_MERGED

Jenis acara webhook ada di header di X-Event-Key lapangan. Tabel berikut menunjukkan bagaimana nilai X-Event-Key header memetakan ke jenis acara.

catatan

Anda harus mengaktifkan merged acara dalam pengaturan GitLab webhook Anda jika Anda membuat grup filter webhook yang menggunakan jenis PULL_REQUEST_MERGED acara.

X-Event-KeyNilai header Jenis peristiwa
repo:push PUSH
pullrequest:created PULL_REQUEST_CREATED
pullrequest:updated PULL_REQUEST_UPDATED
pullrequest:fulfilled PULL_REQUEST_MERGED

UntukPULL_REQUEST_MERGED, jika permintaan tarik digabungkan dengan strategi squash dan cabang permintaan tarik ditutup, komit permintaan tarik asli tidak ada lagi. Dalam hal ini, variabel CODEBUILD_WEBHOOK_MERGE_COMMIT lingkungan berisi pengidentifikasi komit gabungan yang terjepit.

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 GitLab akun cocok dengan pola ekspresi reguler. Nilai ini muncul di account_id properti actor objek di payload filter webhook.

HEAD_REF

Peristiwa webhook memicu build saat referensi kepala cocok dengan pola ekspresi reguler (misalnya, refs/heads/branch-name danrefs/tags/tag-name). HEAD_REFFilter mengevaluasi nama referensi Git untuk cabang atau tag. Nama cabang atau tag muncul di name bidang new objek di push objek payload webhook. Untuk peristiwa permintaan tarik, nama cabang muncul di name bidang di branch objek source objek di payload webhook.

BASE_REF

Peristiwa webhook memicu build saat referensi dasar cocok dengan pola ekspresi reguler. BASE_REFFilter hanya berfungsi dengan peristiwa permintaan tarik (misalnya,refs/heads/branch-name). BASE_REFFilter mengevaluasi nama referensi Git untuk cabang. Nama cabang muncul di name bidang branch objek di destination objek di payload webhook.

FILE_PATH

Webhook memicu build saat jalur file yang diubah cocok dengan pola ekspresi reguler.

COMMIT_MESSAGE

Webhook memicu build saat pesan head commit cocok dengan pola ekspresi reguler.

catatan

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

Filter acara GitLab webhook (konsol)

Untuk menggunakan AWS Management Console untuk memfilter acara webhook:

  1. Pilih Rebuild setiap kali perubahan kode didorong ke repositori ini ketika 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.

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, build dipicu ketika salah satu atau keduanya mengevaluasi ke true:

  • Grup filter pertama menentukan permintaan tarik yang dibuat atau diperbarui 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 GitLab pengguna yang tidak memiliki ID akun yang cocok dengan ekspresi reguler. actor-account-id

catatan

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

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

Filter acara GitLab 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_MERGED" } ] ]

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 atau diperbarui 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" }, { "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. Dalam contoh ini, build dipicu untuk semua permintaan kecuali peristiwa tag.

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

Anda dapat membuat filter yang memicu build hanya jika perubahan dilakukan oleh GitLab pengguna dengan ID actor-account-id akun.

catatan

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

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

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 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\]" } ] ]

Filter acara GitLab 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 GitLab pengguna yang tidak memiliki ID 12345 akun.

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

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

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: GITLAB 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: EVENT Pattern: PUSH - Type: COMMIT_MESSAGE Pattern: \[CodeBuild\]