View a markdown version of this page

Otomatiskan saluran pipa awal menggunakan pemicu dan penyaringan - AWS CodePipeline

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

Otomatiskan saluran pipa awal menggunakan pemicu dan penyaringan

Pemicu memungkinkan Anda mengonfigurasi pipeline untuk memulai pada jenis peristiwa tertentu atau jenis peristiwa yang difilter, seperti saat perubahan pada cabang tertentu atau permintaan tarik terdeteksi. Pemicu dapat dikonfigurasi untuk tindakan sumber dengan koneksi yang menggunakan CodeStarSourceConnection tindakan di CodePipeline, seperti, Bitbucket GitHub, dan. GitLab Untuk informasi selengkapnya tentang tindakan sumber yang menggunakan koneksi, lihatTambahkan penyedia sumber pihak ketiga ke saluran pipa menggunakan CodeConnections.

Tindakan sumber, seperti CodeCommit dan S3, menggunakan deteksi perubahan otomatis untuk memulai saluran pipa saat perubahan dilakukan. Untuk informasi selengkapnya, lihat CodeCommit tindakan sumber dan EventBridge.

Anda menentukan pemicu menggunakan konsol atau CLI.

Anda menentukan jenis filter sebagai berikut:

  • Tidak ada filter

    Konfigurasi pemicu ini memulai pipeline Anda pada setiap push ke cabang default yang ditentukan sebagai bagian dari konfigurasi tindakan.

  • Tentukan filter

    Anda menambahkan filter yang memulai pipeline Anda pada filter tertentu, seperti pada nama cabang untuk push kode, dan mengambil komit yang tepat. Ini juga mengonfigurasi pipeline untuk tidak memulai secara otomatis pada perubahan apa pun.

    • Dorong

      • Kombinasi filter yang valid adalah:

        • Tag Git

          Sertakan atau kecualikan

        • cabang

          Sertakan atau kecualikan

        • cabang+jalur file

          Sertakan atau kecualikan

    • Permintaan tarik

      • Kombinasi filter yang valid adalah:

        • cabang

          Sertakan atau kecualikan

        • cabang+jalur file

          Sertakan atau kecualikan

  • Jangan mendeteksi perubahan

    Ini tidak menambahkan pemicu dan pipa tidak dimulai secara otomatis pada perubahan apa pun.

Tabel berikut menyediakan opsi filter yang valid untuk setiap jenis acara. Tabel juga menunjukkan konfigurasi pemicu mana yang default ke true atau false untuk deteksi perubahan otomatis dalam konfigurasi tindakan.

Konfigurasi pemicu Tipe peristiwa Opsi filter Mendeteksi perubahan
Tambahkan pemicu - tanpa filter none none true
Tambahkan pemicu — filter pada push kode acara push Git tag, cabang, jalur berkas false
Tambahkan pemicu — filter untuk permintaan tarik permintaan tarik cabang, jalur file false
Tidak ada pemicu - jangan mendeteksi none none false
catatan

Jenis pemicu ini menggunakan deteksi perubahan otomatis (sebagai tipe Webhook pemicu). Penyedia tindakan sumber yang menggunakan tipe pemicu ini adalah koneksi yang dikonfigurasi untuk push kode (Bitbucket Cloud, GitHub, GitHub Enterprise Server, GitLab .com, dan GitLab dikelola sendiri).

Untuk definisi bidang dan referensi lebih lanjut untuk pemicu, lihat

Untuk daftar definisi bidang dalam struktur JSON, lihattriggers.

Untuk pemfilteran, pola ekspresi reguler dalam format glob didukung seperti yang dijelaskan dalam. Bekerja dengan pola glob dalam sintaks

catatan

Dalam kasus tertentu, untuk pipeline dengan pemicu yang difilter pada jalur file, pipeline mungkin tidak dimulai saat cabang dengan filter jalur file pertama kali dibuat. Untuk informasi selengkapnya, lihat Saluran pipa dengan koneksi yang menggunakan pemfilteran pemicu berdasarkan jalur file mungkin tidak dimulai pada pembuatan cabang.

Pertimbangan untuk filter pemicu

Pertimbangan berikut berlaku saat menggunakan pemicu.

  • Anda tidak dapat menambahkan lebih dari satu pemicu per tindakan sumber.

  • Anda dapat menambahkan beberapa jenis filter ke pemicu. Sebagai contoh, lihat 4: Pemicu dengan dua jenis filter push dengan termasuk dan pengecualian yang bertentangan.

  • Untuk pemicu dengan filter cabang dan jalur file, saat mendorong cabang untuk pertama kalinya, pipeline tidak akan berjalan karena tidak ada akses ke daftar file yang diubah untuk cabang yang baru dibuat.

  • Menggabungkan permintaan tarik dapat memicu dua eksekusi pipeline jika konfigurasi pemicu push (branch filter) dan pull request (branch filter) memicu berpotongan.

  • Untuk filter yang memicu pipeline Anda pada peristiwa permintaan tarik, untuk jenis peristiwa permintaan tarik Tertutup, penyedia repositori pihak ketiga untuk koneksi Anda mungkin memiliki status terpisah untuk peristiwa penggabungan. Misalnya, di Bitbucket, peristiwa Git untuk penggabungan bukanlah peristiwa penutupan permintaan tarik. Namun, dalam GitHub, menggabungkan permintaan tarik adalah peristiwa penutupan. Untuk informasi selengkapnya, lihat Peristiwa permintaan tarik untuk pemicu oleh penyedia.

Peristiwa permintaan tarik untuk pemicu oleh penyedia

Tabel berikut menyediakan ringkasan peristiwa Git, seperti untuk penutupan permintaan tarik, yang menghasilkan jenis peristiwa permintaan tarik menurut penyedia.

Penyedia repositori untuk koneksi Anda
Acara PR untuk pemicu Bitbucket GitHub GHES GitLab
Buka - Opsi ini memicu pipeline saat permintaan tarik dibuat untuk jalur cabang/file. Membuat permintaan tarik menghasilkan peristiwa Git Terbuka. Membuat permintaan tarik menghasilkan peristiwa Git Terbuka. Membuat permintaan tarik menghasilkan peristiwa Git Terbuka. Membuat permintaan tarik menghasilkan peristiwa Git Terbuka.
Pembaruan - Opsi ini memicu pipeline saat revisi permintaan tarik diterbitkan untuk jalur cabang/file. Menerbitkan hasil pembaruan dalam peristiwa Git yang Diperbarui. Menerbitkan hasil pembaruan dalam peristiwa Git yang Diperbarui. Menerbitkan hasil pembaruan dalam peristiwa Git yang Diperbarui. Menerbitkan hasil pembaruan dalam peristiwa Git yang Diperbarui.
Ditutup - Opsi ini memicu pipeline saat permintaan tarik ditutup untuk branch/file jalur. Menggabungkan permintaan tarik di Bitbucket menghasilkan peristiwa Git Tertutup. Penting: Menutup permintaan tarik secara manual di Bitbucket tanpa penggabungan tidak menghasilkan peristiwa Git Tertutup. Menggabungkan atau menutup permintaan tarik secara manual menghasilkan peristiwa Git Tertutup. Menggabungkan atau menutup permintaan tarik secara manual menghasilkan peristiwa Git Tertutup. Menggabungkan atau menutup permintaan tarik secara manual menghasilkan peristiwa Git Tertutup.

Contoh untuk filter pemicu

Untuk konfigurasi Git dengan filter untuk jenis peristiwa permintaan push dan pull, filter yang ditentukan mungkin bertentangan satu sama lain. Berikut ini adalah contoh kombinasi filter yang valid untuk acara permintaan push dan pull. Pemicu dapat berisi beberapa jenis filter, seperti dua jenis filter dorong dalam konfigurasi pemicu, dan jenis filter permintaan push dan pull akan menggunakan operasi OR di antara mereka, yang berarti setiap kecocokan akan memulai pipeline. Demikian pula, setiap jenis filter dapat menyertakan beberapa filter seperti FilePaths dan cabang; filter ini akan menggunakan operasi AND, yang berarti hanya kecocokan penuh yang akan memulai pipeline. Setiap jenis filter dapat berisi termasuk dan tidak termasuk, di mana pengecualian lebih diutamakan daripada termasuk. Jika cabang atau jalur file cocok dengan pola pengecualian, itu tidak akan memicu pipeline, bahkan jika itu juga cocok dengan pola include. Ketika komit mengubah beberapa file, setiap file dievaluasi secara independen terhadap filter; jika ada file yang diubah lolos (cocok dengan include dan tidak cocok dengan pengecualian), pipeline akan dimulai. Nama di dalam include/exclude, seperti nama cabang, menggunakan operasi OR. Daftar berikut merangkum operasi untuk setiap bagian dari objek konfigurasi Git.

Untuk daftar definisi bidang dalam struktur JSON dan referensi terperinci untuk menyertakan dan mengecualikan, lihat. triggers

contoh 1: Jenis filter dengan filter untuk cabang dan jalur file (DAN operasi)

Untuk jenis filter tunggal seperti permintaan tarik, Anda dapat menggabungkan filter, dan filter ini akan menggunakan operasi AND, yang berarti hanya kecocokan penuh yang akan memulai pipeline. Contoh berikut menunjukkan konfigurasi Git untuk jenis acara push dengan dua filter berbeda (filePathsdanbranches). Dalam contoh berikut, filePaths akan dan'ed dengan: branches

{ "filePaths": { "includes": ["common/**/*.js"] }, "branches": { "includes": ["feature/**"] } }

Dengan konfigurasi Git di atas, contoh ini menunjukkan peristiwa yang akan memulai eksekusi pipeline karena operasi AND berhasil. Dengan kata lain, jalur common/app.js file disertakan untuk filter, yang memulai pipeline sebagai AND bahkan jika cabang refs/heads/feature/triggers yang ditentukan tidak berdampak.

{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "common/app.js" ] ... } ] }

Contoh berikut menunjukkan peristiwa untuk pemicu dengan konfigurasi di atas yang tidak akan memulai eksekusi pipeline karena cabang dapat memfilter, tetapi jalur file tidak.

{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "src/Main.java" ] ... } ] }
contoh 2: Tidak termasuk diutamakan daripada termasuk

Dalam satu filter, pengecualian diutamakan daripada termasuk. Contoh berikut menunjukkan konfigurasi Git dengan filter tunggal (branches) dalam objek konfigurasi. Ini berarti bahwa jika cabang cocok dengan pola pengecualian (feature-branchdalam contoh), pipeline tidak akan dipicu, bahkan jika itu juga cocok dengan pola include. Jika pola include cocok dan tidak ada kecocokan pola pengecualian, seperti untuk main cabang, maka pipeline akan dipicu.

Untuk contoh berikut JSON:

  • Mendorong komit ke main cabang akan memicu pipa

  • Mendorong komit ke feature-branch cabang tidak akan memicu pipa.

{ "branches": { "Includes": [ "main" ], "Excludes": [ "feature-branch" ] }
contoh 3: Pemicu dengan jenis filter permintaan push dan pull (operasi OR), filter untuk jalur file dan cabang (DAN operasi), dan includes/excludes (tidak termasuk diutamakan)

Objek konfigurasi pemicu, seperti pemicu yang berisi jenis peristiwa push dan jenis peristiwa permintaan tarik, menggunakan operasi OR antara dua jenis peristiwa. Contoh berikut menunjukkan konfigurasi pemicu dengan jenis acara push dengan main cabang yang disertakan dan satu jenis peristiwa permintaan tarik dengan cabang yang sama main dikecualikan. Selain itu, jenis acara push memiliki satu jalur file yang LICENSE.txt dikecualikan dan satu jalur file README.MD disertakan. Untuk jenis peristiwa kedua, permintaan tarik yang ada Closed atau Created di feature-branch cabang (termasuk) memulai pipeline, dan pipeline tidak dimulai saat membuat atau menutup permintaan tarik pada main cabang feature-branch-2 atau (dikecualikan). Dalam setiap jenis acara, pengecualian diutamakan daripada termasuk. Misalnya, untuk acara permintaan tarik di feature-branch cabang (disertakan untuk permintaan tarik), jenis acara push mengecualikan feature-branch cabang, sehingga push tidak akan memicu pipeline.

Untuk contoh berikut,

  • Mendorong komit ke main cabang (termasuk) untuk jalur README.MD file (termasuk) akan memicu pipeline.

  • Di feature-branch cabang (dikecualikan), mendorong komit tidak akan memicu pipeline.

  • Pada cabang yang disertakan, mengedit jalur README.MD file (termasuk) memicu pipeline.

  • Pada cabang yang disertakan, mengedit hanya jalur LICENSE.TXT file (dikecualikan) tidak memicu pipeline. Namun, jika komit yang sama juga berubah README.MD (termasuk), pipeline akan terpicu karena setiap file dievaluasi secara independen.

  • Di feature-branch cabang, menutup permintaan tarik akan memicu pipeline karena feature-branch disertakan untuk jenis peristiwa permintaan tarik dan jenis acara CLOSED cocok.

Gambar berikut menunjukkan konfigurasi.

Contoh konfigurasi pemicu dengan tipe filter push dan tipe filter permintaan tarik

Berikut ini adalah contoh JSON untuk konfigurasi.

"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "branches": { "includes": [ "main" ], "excludes": [ "feature-branch", "feature-branch-2" ] }, "filePaths": { "includes": [ "README.md" ], "excludes": [ "LICENSE.txt" ] } } ], "pullRequest": [ { "events": [ "CLOSED", "OPEN" ], "branches": { "includes": [ "feature-branch" ], "excludes": [ "feature-branch-2", "main" ] } } ] } } ] },
contoh 4: Pemicu dengan dua jenis filter push dengan termasuk dan pengecualian yang bertentangan

Gambar berikut menunjukkan jenis filter push yang menentukan untuk memfilter pada tag release-1 (termasuk). Jenis filter dorong kedua ditambahkan yang menentukan untuk memfilter pada cabang main (termasuk) dan untuk tidak memulai dorongan ke feature* cabang (dikecualikan).

Untuk contoh berikut:

  • Mendorong rilis dari tag release-1 (disertakan untuk filter push pertama) di feature-branch cabang (dikecualikan feature* untuk filter push kedua) akan memicu pipeline karena dua jenis filter push menggunakan operasi OR di antara mereka, dan filter push pertama (tagrelease-1) cocok.

  • Mendorong pelepasan dari main cabang (termasuk untuk filter Push kedua) akan memulai pipa.

Contoh halaman Edit berikut menunjukkan dua jenis filter Push dan konfigurasinya untuk menyertakan dan mengecualikan.

Contoh konfigurasi pemicu dengan tipe filter push yang menyertakan tag release-1 dan jenis filter push termasuk cabang utama* dan tidak termasuk cabang fitur*

Berikut ini adalah contoh JSON untuk konfigurasi.

"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "tags": { "includes": [ "release-1" ] } }, { "branches": { "includes": [ "main*" ], "excludes": [ "feature*" ] } } ] } } ] },
contoh 5: Pemicu dikonfigurasi sementara konfigurasi tindakan default BranchName digunakan untuk memulai manual

BranchNameBidang default konfigurasi tindakan mendefinisikan satu cabang yang akan digunakan saat pipeline dimulai secara manual, sementara pemicu dengan filter dapat digunakan untuk cabang atau cabang apa pun yang Anda tentukan.

Berikut ini adalah contoh JSON untuk konfigurasi tindakan yang menunjukkan BranchName bidang.

{ "name": "Source", "actions": [ { "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "provider": "CodeStarSourceConnection", "version": "1" }, "runOrder": 1, "configuration": { "BranchName": "main", "ConnectionArn": "ARN", "DetectChanges": "false", "FullRepositoryId": "owner-name/my-bitbucket-repo", "OutputArtifactFormat": "CODE_ZIP" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "inputArtifacts": [], "region": "us-west-2", "namespace": "SourceVariables" } ],

Contoh keluaran tindakan berikut menunjukkan cabang utama default digunakan saat pipeline dimulai secara manual.

Contoh halaman keluaran tindakan untuk pipeline yang dimulai secara manual

Contoh keluaran tindakan berikut menunjukkan permintaan tarik dan cabang yang digunakan untuk pemicu saat difilter oleh permintaan tarik.

Contoh halaman keluaran tindakan untuk pipeline yang dimulai dengan tipe filter permintaan tarik pemicu