Çalışma zamanı parametreleri
Çalışma zamanı parametreleri, bir işlem hattına geçirilen değerler üzerinde daha fazla denetime sahip olur. Çalışma zamanı parametreleriyle şunları sağlayabilirsiniz:
- Çalışma zamanında betiklere ve görevlere farklı değerler sağlamak
- Parametre türlerini, izin verilen aralıkları ve varsayılanları denetleme
- Şablon ifadeleriyle işleri ve aşamaları dinamik olarak seçme
Parametreleri şablonlarda ve işlem hattında belirtebilirsiniz. Parametreler sayı ve dize gibi veri türlerine sahiptir ve bir değer alt kümesiyle kısıtlanabilir. parametersYAML'nin bölümü hangi parametrelerin kullanılabilir olduğunu tanımlar.
Parametreler yalnızca şablon ayrıştırma zamanında kullanılabilir. Parametreler, işlem hattı çalıştırılana kadar genişletilir, böylece çevrelene değerler ${{ }} parametre değerleriyle değiştirilir. İşlem hattı çalıştırmanız sırasında değerlerinizin daha geniş bir şekilde kullanılabilir olması gerekirse değişkenleri kullanın.
Not
Bu kılavuz, klasik işlem hatları için geçerli değildir. Klasik işlem hatlarında parametreler için bkz. İşlem parametreleri (klasik).
Parametreler bir ad ve veri türü içermeli. Parametreler isteğe bağlı olamaz. YAML dosyanıza veya işlem hattınızı çalıştırarak varsayılan değer atanabilir. Varsayılan bir değer atadığınız veya olarak defaultfalse ayarlanmazsa, kullanılabilir ilk değer kullanılır.
İşlem hatlarında parametreleri kullanma
YAML'nin başında çalışma zamanı parametrelerini ayarlayın. Bu örnek işlem hattı değerini kabul image eder ve ardından işteki değeri verir. trigger, işlem hattınızı el ile çalıştıracak şekilde image tetikleyenin değerini seçerek hiçbiri olarak ayarlanır.
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 }}
İşlem hattı çalıştır geldiğinde Havuz Görüntüsünü seçersiniz. Seçim yapmasanız da varsayılan seçenek ubuntu-latest kullanılır.

Parametrelerle koşulluları kullanma
Parametreleri koşullu mantığın bir parçası olarak da kullanabilirsiniz. Koşullularla, YAML'nin bir bölümü yalnızca ölçütleri karşılarsa çalışmasına neden if olur.
Hangi adımların çalıştırılacaklarını belirlemek için parametreleri kullanma
Bu işlem hattı yalnızca boole parametresi true olduğunda bir test adım çalıştırır.
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"
Kullanılan yapılandırmayı ayarlamak için parametreleri kullanma
Ayrıca parametreleri kullanarak hangi işin çalıştırılamayacaklarını da belirtsiniz. Bu örnekte, değerine bağlı olarak farklı bir iş config çalışır.
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...
Bir aşamayı seçmeli olarak dışlama
Ayrıca, bir aşamanın çalıştırıp çalıştırılamayacaklarını ayarlamak için parametreleri de kullanabilirsiniz. Bu örnekte, parametre true ise Performans Testi aşaması runPerfTests çalışır.
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
Parametrelerde döngü
Ayrıca dizeniz, sayınız ve boole parametreleriniz arasında döngü de döngüleri attırmanızı sağlar.
Bu örnekte, parametrelerde döngüye geçiyor ve her parametre adını ve değerini yazdırıyor oluruz.
# 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
Boş parametre nesnesini denetleme
Bir nesne parametresinin length()length() sahip olup olmadığını kontrol etmek için ifadeyi kullanabilirsiniz.
parameters:
- name: foo
type: object
default: []
steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
- script: echo Foo is empty
displayName: Foo is empty
Parametre veri türleri
| Veri türü | Notlar |
|---|---|
string |
string |
number |
ile values: kısıtlanabilir, aksi takdirde sayıya benzer herhangi bir dize kabul edilir |
boolean |
true veya false |
object |
herhangi bir YAML yapısı |
step |
tek bir adım |
stepList |
adım dizisi |
job |
tek bir iş |
jobList |
iş dizisi |
deployment |
tek bir dağıtım işi |
deploymentList |
dağıtım işleri dizisi |
stage |
tek bir aşama |
stageList |
aşama dizisi |
Step, stepList, job, jobList, deployment, deploymentList, stage ve stageList veri türlerinin hepsi standart YAML şema biçimini kullanır. Bu örnek dize, sayı, boole, nesne, adım ve stepList'i içerir.
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 }}
SSS
Şablonların içinde değişkenleri nasıl kullanabilirim?
Parametreleri değişkenlere göre değerlere ayarlamak faydalı olabilir. Parametreler işlem hattı çalıştırması işlemenin erken bir aşamasına genişletilir, bu nedenle tüm değişkenler kullanılamaz. Şablonlarda hangi önceden tanımlanmış değişkenlerin kullanılabilir olduğunu görmek için bkz. Önceden tanımlanmış değişkenleri kullanma.
Bu örnekte, ve önceden tanımlanmış değişkenleri Build.SourceBranchBuild.Reason template.yml'de koşullarda kullanılır.
# File: azure-pipelines.yml
trigger:
- main
extends:
template: template.yml
# File: template.yml
steps:
- script: echo Build.SourceBranch = $(Build.SourceBranch) # outputs refs/heads/main
- script: echo Build.Reason = $(Build.Reason) # outputs IndividualCI
- ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}:
- script: echo I run only if Build.SourceBranch = refs/heads/main
- ${{ if eq(variables['Build.Reason'], 'IndividualCI') }}:
- script: echo I run only if Build.Reason = IndividualCI
- script: echo I run after the conditions