Parameter runtime

Layanan Azure DevOps | Azure DevOps Server 2022 | Azure DevOps Server 2020

Dengan parameter runtime, Anda dapat memiliki kontrol lebih besar atas nilai apa yang dapat diteruskan ke alur. Dengan parameter runtime Anda dapat:

  • Memberikan nilai yang berbeda kepada skrip dan tugas saat runtime
  • Mengontrol jenis parameter, rentang yang diizinkan, dan default
  • Memilih pekerjaan dan tahapan secara dinamis dengan ekspresi templat

Anda dapat menentukan parameter dalam templat dan di alur. Parameter memiliki jenis data seperti angka dan string, dan dapat dibatasi untuk subset nilai. Bagian parameters dalam YAML menentukan parameter apa yang tersedia.

Parameter hanya tersedia pada waktu penguraian templat. Parameter diperluas tepat sebelum alur berjalan sehingga nilai yang dikelilingi oleh ${{ }} diganti dengan nilai parameter. Gunakan variabel jika Anda memerlukan nilai Anda agar lebih tersedia secara luas selama eksekusi alur Anda.

Catatan

Panduan ini tidak berlaku untuk alur klasik. Untuk parameter dalam alur klasik, lihat Parameter proses (klasik).

Parameter harus berisi nama dan jenis data. Parameter tidak boleh bersifat opsional. Nilai default perlu ditetapkan dalam file YAML Anda atau saat Anda menjalankan alur Anda. Jika Anda tidak menetapkan nilai default atau mengatur default ke false, nilai pertama yang tersedia akan digunakan.

Gunakan templateContext untuk meneruskan properti tambahan ke tahapan, langkah, dan pekerjaan yang digunakan sebagai parameter dalam templat.

Menggunakan parameter dalam alur

Atur parameter runtime di awal YAML.

Contoh alur ini mencakup image parameter dengan tiga agen yang dihosting sebagai string opsi. Di bagian pekerjaan, pool nilai menentukan agen dari parameter yang digunakan untuk menjalankan pekerjaan. trigger diatur ke tidak ada sehingga Anda dapat memilih nilai image saat Anda memicu alur untuk dijalankan secara manual.

parameters:
- name: image
  displayName: Pool Image
  type: string
  default: ubuntu-latest
  values:
  - windows-latest
  - ubuntu-latest
  - macOS-latest

trigger: none

jobs:
- job: build
  displayName: build
  pool: 
    vmImage: ${{ parameters.image }}
  steps:
  - script: echo building $(Build.BuildNumber) with ${{ parameters.image }}

Saat alur berjalan, Anda memilih Gambar Kumpulan. Jika Anda tidak membuat pilihan, opsi default, ubuntu-latest akan digunakan.

parameter runtime

Menggunakan kondisi dengan parameter

Anda juga dapat menggunakan parameter sebagai bagian dari logika bersyarah. Dengan kondisional, bagian dari YAML berjalan jika memenuhi if kriteria.

Menggunakan parameter untuk menentukan langkah-langkah apa yang dijalankan

Alur ini menambahkan parameter boolean kedua, test, yang dapat digunakan untuk mengontrol apakah akan menjalankan pengujian dalam alur atau tidak. Ketika nilai test benar, langkah yang menghasilkan Menjalankan semua pengujian berjalan.

parameters:
- name: image
  displayName: Pool Image
  values:
  - windows-latest
  - ubuntu-latest
  - macOS-latest
- name: test
  displayName: Run Tests?
  type: boolean
  default: false

trigger: none

jobs:
- job: build
  displayName: Build and Test
  pool: 
    vmImage: ${{ parameters.image }}
  steps:
  - script: echo building $(Build.BuildNumber)
  - ${{ if eq(parameters.test, true) }}:
    - script: echo "Running all the tests"

Menggunakan parameter untuk mengatur konfigurasi apa yang digunakan

Anda juga dapat menggunakan parameter untuk mengatur pekerjaan mana yang berjalan. Dalam contoh ini, arsitektur yang berbeda dibangun tergantung pada nilai config parameter, yang merupakan string jenis. Secara default, arsitektur x86 dan x64 membangun.

parameters:
- name: configs
  type: string
  default: 'x86,x64'

trigger: none

jobs:
- ${{ if contains(parameters.configs, 'x86') }}:
  - job: x86
    steps:
    - script: echo Building x86...
- ${{ if contains(parameters.configs, 'x64') }}:
  - job: x64
    steps:
    - script: echo Building x64...
- ${{ if contains(parameters.configs, 'arm') }}:
  - job: arm
    steps:
    - script: echo Building arm...

Mengecualikan tahap secara selektif

Anda juga dapat menggunakan parameter untuk mengatur apakah tahap berjalan. Dalam contoh ini, ada alur dengan empat tahap dan pekerjaan yang berbeda untuk setiap tahap. Tahap Uji Performa berjalan jika parameternya runPerfTests benar. Nilai runPerfTests default adalah false sehingga tanpa pembaruan apa pun, hanya tiga dari empat tahap yang dijalankan.

parameters:
- name: runPerfTests
  type: boolean
  default: false

trigger: none

stages:
- stage: Build
  displayName: Build
  jobs:
  - job: Build
    steps:
    - script: echo running Build


- stage: UnitTest
  displayName: Unit Test
  dependsOn: Build
  jobs:
  - job: UnitTest
    steps:
    - script: echo running UnitTest


- ${{ if eq(parameters.runPerfTests, true) }}:
  - stage: PerfTest
    displayName: Performance Test
    dependsOn: Build
    jobs:
    - job: PerfTest
      steps:
      - script: echo running PerfTest


- stage: Deploy
  displayName: Deploy
  dependsOn: UnitTest
  jobs:
  - job: Deploy
    steps:
    - script: echo running UnitTest

Perulangan melalui parameter

Anda juga dapat mengulang parameter string, angka, dan boolean Anda.

Dalam contoh ini, Anda mengulang parameter dan mencetak nama dan nilai setiap parameter. Ada empat parameter yang berbeda dan masing-masing mewakili jenis yang berbeda. myStringName adalah string baris tunggal. myMultiString adalah string multibaris. myNumber is a number. myBoolean adalah nilai boolean. Di bagian langkah-langkah, tugas skrip menghasilkan kunci dan nilai setiap parameter.

# start.yaml
parameters:
- name: myStringName
  type: string
  default: a string value
- name: myMultiString
  type: string
  default: default
  values:
  - default
  - ubuntu
- name: myNumber
  type: number
  default: 2
  values:
  - 1
  - 2
  - 4
  - 8
  - 16
- name: myBoolean
  type: boolean
  default: true

steps: 
- ${{ each parameter in parameters }}:
  - script: echo ${{ parameter.Key }} 
  - script: echo ${{ parameter.Value }}
# azure-pipeline.yaml
trigger: none

extends:
  template: start.yaml

Periksa objek parameter kosong

Anda dapat menggunakan length()ekspresi untuk memeriksa apakah parameter objek tidak memiliki nilai.

parameters:
- name: foo
  type: object
  default: []

steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
  - script: echo Foo is empty
    displayName: Foo is empty

Jenis data parameter

Jenis Data Catatan
string string
number dapat dibatasi untuk values:, jika tidak, string seperti angka apa pun diterima
boolean true atau false
object struktur YAML apa pun
step satu langkah
stepList urutan langkah
job satu pekerjaan
jobList urutan pekerjaan
deployment satu pekerjaan penyebaran
deploymentList urutan pekerjaan penyebaran
stage satu tahap
stageList urutan tahapan

Langkah, stepList, pekerjaan, jobList, penyebaran, deploymentList, tahap, dan jenis data stageList semuanya menggunakan format skema YAML standar. Contoh ini mencakup string, angka, boolean, objek, langkah, dan stepList.

parameters:
- name: myString
  type: string
  default: a string
- name: myMultiString
  type: string
  default: default
  values:
  - default
  - ubuntu
- name: myNumber
  type: number
  default: 2
  values:
  - 1
  - 2
  - 4
  - 8
  - 16
- name: myBoolean
  type: boolean
  default: true
- name: myObject
  type: object
  default:
    foo: FOO
    bar: BAR
    things:
    - one
    - two
    - three
    nested:
      one: apple
      two: pear
      count: 3
- name: myStep
  type: step
  default:
    script: echo my step
- name: mySteplist
  type: stepList
  default:
    - script: echo step one
    - script: echo step two

trigger: none

jobs: 
- job: stepList
  steps: ${{ parameters.mySteplist }}
- job: myStep
  steps:
    - ${{ parameters.myStep }}