Bagikan melalui


definisi stages.stage

Tahapan adalah kumpulan pekerjaan terkait. Secara default, tahapan berjalan secara berurutan. Setiap tahap dimulai hanya setelah tahap sebelumnya selesai kecuali ditentukan lain melalui properti dependsOn.

stages:
- stage: string # Required as first property. ID of the stage.
  displayName: string # Human-readable name for the stage.
  pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
  dependsOn: string | [ string ] # Any stages which must complete before this one.
  condition: string # Evaluate this condition expression to determine whether to run this stage.
  variables: variables | [ variable ] # Stage-specific variables.
  jobs: [ job | deployment | template ] # Jobs which make up the stage.
  lockBehavior: sequential | runLatest # Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests.
  trigger: manual | automatic # Stage trigger manual or automatic (default).
  isSkippable: boolean # Setting false prevents the stage from being skipped. By default it's always true.
  templateContext: # Stage related information passed from a pipeline when extending a template.
stages:
- stage: string # Required as first property. ID of the stage.
  displayName: string # Human-readable name for the stage.
  pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
  dependsOn: string | [ string ] # Any stages which must complete before this one.
  condition: string # Evaluate this condition expression to determine whether to run this stage.
  variables: variables | [ variable ] # Stage-specific variables.
  jobs: [ job | deployment | template ] # Jobs which make up the stage.
  lockBehavior: sequential | runLatest # Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests.
  templateContext: # Stage related information passed from a pipeline when extending a template.
stages:
- stage: string # Required as first property. ID of the stage.
  displayName: string # Human-readable name for the stage.
  pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
  dependsOn: string | [ string ] # Any stages which must complete before this one.
  condition: string # Evaluate this condition expression to determine whether to run this stage.
  variables: variables | [ variable ] # Stage-specific variables.
  jobs: [ job | deployment | template ] # Jobs which make up the stage.

Definisi yang mereferensikan definisi ini: tahap

Sifat

stage tali. Diperlukan sebagai properti pertama.
ID panggung.

displayName tali.
Nama yang dapat dibaca manusia untuk panggung.

kumpulan pool.
Pool tempat pekerjaan dalam tahap ini akan berjalan kecuali ditentukan lain.

string dependsOn | daftar string.
Tahap apa pun yang harus diselesaikan sebelum tahap ini. Secara default tahap dijalankan secara berurutan dalam urutan yang ditentukan dalam alur. Tentukan dependsOn: [] untuk tahap jika seharusnya tidak bergantung pada tahap sebelumnya dalam alur.

condition tali.
Evaluasi ekspresi kondisi ini untuk menentukan apakah akan menjalankan tahap ini.

variables variabel.
Variabel khusus tahapan.

jobs pekerjaan.
Pekerjaan yang membentuk panggung.

lockBehavior tali.
Permintaan penguncian perilaku dari tahap ini harus dipamerkan sehubungan dengan permintaan kunci eksklusif lainnya. berurutan | runLatest.

trigger tali.
Tahap pemicu manual atau otomatis (default). manual | otomatis.

isSkippable boolean.
Pengaturan false mencegah tahap dilewati. Secara default selalu benar.

templateContext templateContext.
Tahap informasi terkait yang diteruskan dari alur saat memperluas templat. Untuk informasi selengkapnya tentang templateContext, lihat templat Extended YAML Pipelines sekarang dapat diteruskan informasi konteks untuk tahapan, pekerjaan, dan penyebaran dan templat - Gunakan templateContext untuk meneruskan properti ke templat.

Komentar

Untuk informasi selengkapnya tentang templateContext, lihat templat Extended YAML Pipelines sekarang dapat diteruskan informasi konteks untuk tahapan, pekerjaan, dan penyebaran dan templat - Gunakan templateContext untuk meneruskan properti ke templat.

Gunakan pemeriksaan persetujuan untuk mengontrol secara manual kapan tahap harus berjalan. Pemeriksaan ini biasanya digunakan untuk mengontrol penyebaran ke lingkungan produksi.

Pemeriksaan adalah mekanisme yang tersedia untuk pemilik sumber daya . Pemeriksaan mengontrol saat tahapan dalam alur menggunakan sumber daya. Sebagai pemilik sumber daya seperti lingkungan, Anda dapat menentukan pemeriksaan yang diperlukan sebelum tahap yang menggunakan sumber daya dapat dimulai.

Saat ini, pemeriksaan persetujuan manual didukung pada lingkungan . Untuk informasi selengkapnya, lihat Persetujuan.

Kunci eksklusif

Dalam alur YAML, pemeriksaan digunakan untuk mengontrol eksekusi tahapan pada sumber daya yang dilindungi . Salah satu pemeriksaan umum yang dapat Anda gunakan adalah pemeriksaan kunci eksklusif . Pemeriksaan ini memungkinkan hanya satu eksekusi dari alur yang dilanjutkan. Ketika beberapa eksekusi mencoba menyebarkan ke lingkungan secara bersamaan, pemeriksaan membatalkan semua eksekusi lama dan mengizinkan eksekusi terbaru untuk disebarkan.

Anda dapat mengonfigurasi perilaku pemeriksaan kunci eksklusif menggunakan properti lockBehavior, yang memiliki dua nilai:

  • runLatest - Hanya eksekusi terbaru yang memperoleh kunci ke sumber daya. Ini adalah nilai default jika tidak ada lockBehavior yang ditentukan.
  • sequential - Semua eksekusi memperoleh kunci secara berurutan ke sumber daya yang dilindungi.

Membatalkan eksekusi lama adalah pendekatan yang baik ketika rilis Anda bersifat kumulatif dan berisi semua perubahan kode dari eksekusi sebelumnya. Namun, ada beberapa alur di mana perubahan kode tidak kumulatif. Dengan mengonfigurasi properti lockBehavior, Anda dapat memilih untuk mengizinkan semua eksekusi untuk melanjutkan dan menyebarkan secara berurutan ke lingkungan, atau mempertahankan perilaku sebelumnya untuk membatalkan eksekusi lama dan hanya mengizinkan yang terbaru. Nilai sequential menyiratkan bahwa semua eksekusi memperoleh kunci secara berurutan ke sumber daya yang dilindungi. Nilai runLatest menyiratkan bahwa hanya eksekusi terbaru yang memperoleh kunci ke sumber daya.

Untuk menggunakan pemeriksaan kunci eksklusif dengan penyebaran sequential atau runLatest, ikuti langkah-langkah berikut:

  1. Aktifkan pemeriksaan kunci eksklusif pada lingkungan (atau sumber daya lain yang dilindungi).
  2. Dalam file YAML untuk alur, tentukan properti baru yang disebut lockBehavior. Ini dapat ditentukan untuk seluruh alur atau untuk tahap tertentu:

Atur pada panggung:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

Atur pada alur:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

Kunci eksklusif pada tingkat tahap

Beberapa kasus penggunaan memerlukan alur untuk mengakses sumber daya tertentu hanya sekali pada waktu tertentu. Untuk mendukung kasus ini, kami memiliki pemeriksaan kunci eksklusif yang dijelaskan di bagian sebelumnya..

Situasi serupa muncul ketika hanya satu eksekusi alur yang harus mengakses tahap kapan saja. Misalnya, jika Anda memiliki tahap yang disebarkan ke grup sumber daya Azure, Anda mungkin ingin mencegah beberapa eksekusi alur memperbarui grup sumber daya yang sama secara bersamaan. Saat ini, mencapai hal ini memerlukan penggunaan sumber daya proksi, seperti lingkungan, dan menempatkan pemeriksaan kunci eksklusif pada lingkungan tersebut. Pendekatan ini dapat memakan waktu, menambah kompleksitas, dan meningkatkan upaya pemeliharaan.

Jika Anda hanya perlu memastikan satu eksekusi alur pada satu waktu yang dapat mengakses tahap, Anda dapat menentukan kunci eksklusif pada tingkat tahap. Jika Anda memiliki tahap dengan ID dan menentukan properti lockBehavior, kunci secara otomatis dibuat untuk tahap tersebut. Perilaku berurutan tetap konsisten untuk kunci tingkat sumber daya dan tingkat tahap. Namun, perilaku runLatest berbeda, karena hanya membatalkan runLatest build untuk cabang yang sama, bukan untuk semua cabang alur.

Contoh

Contoh ini menjalankan tiga tahapan, satu demi satu. Tahap tengah menjalankan dua pekerjaan secara paralel.

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - script: echo Building!
- stage: Test
  jobs:
  - job: TestOnWindows
    steps:
    - script: echo Testing on Windows!
  - job: TestOnLinux
    steps:
    - script: echo Testing on Linux!
- stage: Deploy
  jobs:
  - job: Deploy
    steps:
    - script: echo Deploying the code!

Contoh ini menjalankan dua tahap secara paralel. Untuk brevity, pekerjaan dan langkah-langkah dihilangkan.

stages:
- stage: BuildWin
  displayName: Build for Windows
- stage: BuildMac
  displayName: Build for Mac
  dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it

Lihat juga

Pelajari selengkapnya tentang tahap , kondisi variabel , dan .