Ç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.

çalışma zamanı parametreleri

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 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