Memicu alur satu per satu
Layanan Azure DevOps | Azure DevOps Server 2022 | Azure DevOps Server 2020
Produk besar memiliki beberapa komponen yang bergantung satu sama lain. Komponen-komponen ini sering dibangun secara independen. Ketika komponen upstream (pustaka, misalnya) berubah, dependensi hilir harus dibangun kembali dan divalidasi ulang.
Dalam situasi seperti ini, tambahkan pemicu alur untuk menjalankan alur Anda setelah berhasil menyelesaikan alur pemicu.
Catatan
Sebelumnya, Anda mungkin telah menavigasi ke editor klasik untuk alur YAML Anda dan mengonfigurasi pemicu penyelesaian build di UI. Meskipun model itu masih berfungsi, model tersebut tidak lagi direkomendasikan. Pendekatan yang disarankan adalah menentukan pemicu alur langsung dalam file YAML. Pemicu penyelesaian build seperti yang didefinisikan dalam editor klasik memiliki berbagai kelemahan, yang sekarang telah ditangani dalam pemicu alur. Misalnya, tidak ada cara untuk memicu alur pada cabang yang sama dengan alur pemicu menggunakan pemicu penyelesaian build.
Mengonfigurasi pemicu sumber daya alur
Untuk memicu alur setelah selesainya alur lain, konfigurasikan pemicu sumber daya alur.
Contoh berikut mengonfigurasi pemicu sumber daya alur sehingga alur bernama app-ci
berjalan setelah eksekusi security-lib-ci
alur selesai.
Contoh ini memiliki dua alur berikut.
security-lib-ci
- Alur ini berjalan terlebih dahulu.# security-lib-ci YAML pipeline steps: - bash: echo "The security-lib-ci pipeline runs first"
app-ci
- Alur ini memiliki pemicu sumber daya alur yang mengonfigurasiapp-ci
alur untuk berjalan secara otomatis setiap kalisecurity-lib-ci
eksekusi alur selesai.# app-ci YAML pipeline # We are setting up a pipeline resource that references the security-lib-ci # pipeline and setting up a pipeline completion trigger so that our app-ci # pipeline runs when a run of the security-lib-ci pipeline completes resources: pipelines: - pipeline: securitylib # Name of the pipeline resource. source: security-lib-ci # The name of the pipeline referenced by this pipeline resource. project: FabrikamProject # Required only if the source pipeline is in another project trigger: true # Run app-ci pipeline when any run of security-lib-ci completes steps: - bash: echo "app-ci runs after security-lib-ci completes"
- pipeline: securitylib
menentukan nama sumber daya alur. Gunakan label yang ditentukan di sini saat merujuk ke sumber daya alur dari bagian lain dari alur, seperti saat menggunakan variabel sumber daya alur atau mengunduh artefak.source: security-lib-ci
menentukan nama alur yang dirujuk oleh sumber daya alur ini. Anda dapat mengambil nama alur dari portal Azure DevOps di beberapa tempat, seperti halaman arahan Alur. Secara default, alur dinamai sesuai repositori yang berisi alur. Untuk memperbarui nama alur, lihat Pengaturan alur. Jika alur terkandung dalam folder, sertakan nama folder, termasuk yang di depan\
, misalnya\security pipelines\security-lib-ci
.project: FabrikamProject
- Jika alur pemicu berada di proyek Azure DevOps lain, Anda harus menentukan nama proyek. Properti ini bersifat opsional jika alur sumber dan alur yang dipicu berada dalam proyek yang sama. Jika Anda menentukan nilai ini dan alur Anda tidak terpicu, lihat catatan di akhir bagian ini.trigger: true
- Gunakan sintaks ini untuk memicu alur ketika versi alur sumber selesai. Lihat bagian berikut dalam artikel ini untuk mempelajari cara memfilter versi penyelesaian alur sumber mana yang akan memicu eksekusi. Saat filter ditentukan, eksekusi alur sumber harus cocok dengan semua filter untuk memicu eksekusi.
Jika alur pemicu dan alur yang dipicu menggunakan repositori yang sama, kedua alur akan berjalan menggunakan penerapan yang sama ketika satu memicu yang lain. Ini berguna jika alur pertama Anda membangun kode dan alur kedua mengujinya. Namun, jika kedua alur menggunakan repositori yang berbeda, alur yang dipicu akan menggunakan versi kode di cabang yang ditentukan oleh Default branch for manual and scheduled builds
pengaturan, seperti yang dijelaskan dalam Pertimbangan cabang untuk pemicu penyelesaian alur.
Catatan
Dalam beberapa skenario, cabang default untuk build manual dan build terjadwal tidak menyertakan refs/heads
awalan. Misalnya, cabang default mungkin diatur ke main
alih-alih ke refs/heads/main
. Dalam skenario ini, pemicu dari proyek yang berbeda tidak berfungsi. Jika Anda mengalami masalah saat Anda mengatur project
ke nilai selain alur target, Anda dapat memperbarui cabang default untuk disertakan refs/heads
dengan mengubah nilainya ke cabang yang berbeda, lalu dengan mengubahnya kembali ke cabang default yang ingin Anda gunakan.
Mengonfigurasi pemicu penyelesaian alur tidak didukung dalam templat YAML. Anda masih dapat menentukan sumber daya alur dalam templat.
Filter cabang
Anda dapat secara opsional menentukan cabang yang akan disertakan atau dikecualikan saat mengonfigurasi pemicu. Jika Anda menentukan filter cabang, alur baru dipicu setiap kali eksekusi alur sumber berhasil diselesaikan yang cocok dengan filter cabang. Dalam contoh berikut, app-ci
alur berjalan jika security-lib-ci
selesai di cabang apa pun releases/*
, kecuali untuk releases/old*
.
# app-ci YAML pipeline
resources:
pipelines:
- pipeline: securitylib
source: security-lib-ci
trigger:
branches:
include:
- releases/*
exclude:
- releases/old*
Untuk memicu alur anak untuk cabang yang berbeda tempat induk dipicu, sertakan semua filter cabang tempat induk dipicu. Dalam contoh berikut, app-ci
alur berjalan jika security-lib-ci
selesai pada cabang atau cabang utama apa pun releases/*
, kecuali untuk releases/old*
.
# app-ci YAML pipeline
resources:
pipelines:
- pipeline: securitylib
source: security-lib-ci
trigger:
branches:
include:
- releases/*
- main
exclude:
- releases/old*
Catatan
Jika filter cabang Anda tidak berfungsi, coba gunakan awalan refs/heads/
. Misalnya, gunakan refs/heads/releases/old*
, bukan releases/old*
.
Filter tag
Catatan
Dukungan filter tag untuk sumber daya alur memerlukan Azure DevOps Server 2020 Update 1 atau yang lebih tinggi.
tags
Properti trigger
filter tempat peristiwa penyelesaian alur dapat memicu alur Anda. Jika alur pemicu cocok dengan semua tag dalam tags
daftar, alur akan berjalan.
resources:
pipelines:
- pipeline: MyCIAlias
source: Farbrikam-CI
trigger:
tags: # This filter is used for triggering the pipeline run
- Production # Tags are AND'ed
- Signed
Catatan
Sumber daya alur juga memiliki tags
properti. Properti tags
sumber daya alur digunakan untuk menentukan eksekusi alur mana yang akan diambil artefaknya, ketika alur dipicu secara manual atau oleh pemicu terjadwal. Untuk informasi selengkapnya, lihat Sumber Daya: alur dan Evaluasi versi artefak.
Filter tahapan
Catatan
Filter tahapan untuk pemicu sumber daya alur memerlukan Azure DevOps Server 2020 Update 1 atau yang lebih besar.
Anda dapat memicu alur Anda saat satu atau beberapa tahap alur pemicu selesai dengan menggunakan stages
filter. Jika Anda menyediakan beberapa tahap, alur yang dipicu berjalan saat semua tahap yang tercantum selesai.
resources:
pipelines:
- pipeline: MyCIAlias
source: Farbrikam-CI
trigger:
stages: # This stage filter is used when evaluating conditions for
- PreProduction # triggering your pipeline. On successful completion of all the stages
- Production # provided, your pipeline will be triggered.
Pertimbangan cabang
Pemicu penyelesaian alur menggunakan cabang Default untuk pengaturan build manual dan terjadwal untuk menentukan versi cabang filter cabang alur YAML mana yang akan dievaluasi saat menentukan apakah akan menjalankan alur sebagai hasil dari penyelesaian alur lain. Secara default pengaturan ini menunjuk ke cabang default repositori.
Ketika alur selesai, runtime Azure DevOps mengevaluasi filter cabang pemicu sumber daya alur dari alur apa pun dengan pemicu penyelesaian alur yang mereferensikan alur yang telah selesai. Alur dapat memiliki beberapa versi di cabang yang berbeda, sehingga runtime mengevaluasi filter cabang dalam versi alur di cabang yang ditentukan oleh Default branch for manual and scheduled builds
pengaturan. Jika ada kecocokan, alur berjalan, tetapi versi alur yang berjalan mungkin berada di cabang yang berbeda tergantung pada apakah alur yang dipicu berada di repositori yang sama dengan alur yang selesai.
- Jika kedua alur berada di repositori yang berbeda, versi alur yang dipicu di cabang yang ditentukan oleh
Default branch for manual and scheduled builds
dijalankan. - Jika kedua alur berada di repositori yang sama, versi alur yang dipicu di cabang yang sama dengan alur pemicu dijalankan (menggunakan versi alur dari cabang tersebut pada saat kondisi pemicu terpenuhi), bahkan jika cabang tersebut berbeda dari , dan bahkan jika versi tersebut
Default branch for manual and scheduled builds
tidak memiliki filter cabang yang cocok dengan cabang alur yang selesai. Ini karena filter cabang dariDefault branch for manual and scheduled builds
cabang digunakan untuk menentukan apakah alur harus berjalan, dan bukan filter cabang dalam versi yang ada di cabang alur yang telah selesai.
Jika pemicu penyelesaian alur Anda tampaknya tidak diaktifkan, periksa nilai cabang Default untuk pengaturan build manual dan terjadwal untuk alur yang dipicu. Filter cabang dalam versi alur cabang tersebut digunakan untuk menentukan apakah pemicu penyelesaian alur memulai eksekusi alur. Secara default, Default branch for manual and scheduled builds
diatur ke cabang default repositori, tetapi Anda dapat mengubahnya setelah alur dibuat.
Skenario umum di mana pemicu penyelesaian alur tidak diaktifkan adalah ketika cabang baru dibuat, filter cabang pemicu penyelesaian alur dimodifikasi untuk menyertakan cabang baru ini, tetapi ketika alur pertama selesai pada cabang yang cocok dengan filter cabang baru, alur kedua tidak memicu. Ini terjadi jika cabang memfilter dalam versi alur di Default branch for manual and scheduled builds
cabang tidak cocok dengan cabang baru. Untuk mengatasi masalah pemicu ini, Anda memiliki dua opsi berikut.
- Perbarui filter cabang di alur di
Default branch for manual and scheduled builds
cabang sehingga cocok dengan cabang baru. - Perbarui cabang Default untuk pengaturan build manual dan terjadwal ke cabang yang memiliki versi alur dengan filter cabang yang cocok dengan cabang baru.
Menggabungkan jenis pemicu
Saat Anda menentukan pemicu CI dan pemicu alur di alur Anda, Anda dapat mengharapkan eksekusi baru dimulai setiap kali pendorongan dilakukan yang cocok dengan filter pemicu CI, dan eksekusi alur sumber selesai yang cocok dengan filter pemicu penyelesaian alur.
Misalnya, pertimbangkan dua alur bernama A
dan B
yang berada di repositori yang sama, keduanya memiliki pemicu CI, dan B
memiliki pemicu penyelesaian alur yang dikonfigurasi untuk penyelesaian alur A
. Jika Anda melakukan pendorongan ke repositori:
- Eksekusi
A
baru dimulai, berdasarkan pemicu CI-nya. - Pada saat yang sama, eksekusi
B
baru dimulai, berdasarkan pemicu CI-nya. Eksekusi ini mengonsumsi artefak dari eksekusi alurA
sebelumnya . - Ketika
A
selesai, ini memicu eksekusi lain dariB
, berdasarkan pemicu penyelesaian alur diB
.
Untuk mencegah pemicu dua eksekusi B
dalam contoh ini, Anda harus menonaktifkan pemicu CI -nya (trigger: none
) atau pemicu alur (pr: none
).