Aracılığıyla paylaş


Çalışma zamanı parametreleri

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Çalışma zamanı parametreleri, işlem hattına geçirilebilen değerler üzerinde daha fazla denetim sahibi olmanıza olanak tanır. Çalışma zamanı parametreleriyle:

  • Çalışma zamanında betiklere ve görevlere farklı değerler sağlayın
  • 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 değerlerin bir alt kümesiyle sınırlandırılabilir. parameters YAML'deki bölüm hangi parametrelerin kullanılabilir olduğunu tanımlar.

Parametreler yalnızca şablon ayrıştırma zamanında kullanılabilir. İşlem hattı çalışmadan hemen önce parametreler genişletilir, böylece ile ${{ }} çevrelenen değerler parametre değerleriyle değiştirilir. İşlem hattı çalıştırmanız sırasında değerlerinizin daha yaygın olarak kullanılabilir olmasını istiyorsanız değişkenleri kullanın.

Not

Bu kılavuz klasik işlem hatları için geçerli değildir. Klasik işlem hatlarındaki parametreler için bkz . İşlem parametreleri (klasik)...

Parametreler bir ad ve veri türü içermelidir. Parametreler isteğe bağlı olamaz. YAML dosyanızda veya işlem hattınızı çalıştırdığınızda varsayılan bir değer atanmalıdır. Varsayılan bir değer atamıyorsanız veya olarak ayarlamıyorsanız default false, kullanılabilir ilk değer kullanılır.

Şablonda parametre olarak kullanılan aşamalara, adımlara ve işlere ek özellikler geçirmek için templateContext kullanın.

İşlem hatlarında parametreleri kullanma

YAML'nin başında çalışma zamanı parametrelerini ayarlayın.

Bu örnek işlem hattı, üç barındırılan aracıyı seçenek olarak string içeren bir image parametre içerir. İşler bölümünde değeri, pool işi çalıştırmak için kullanılan parametreden aracıyı belirtir. trigger yok olarak ayarlanır, böylece işlem hattınızı el ile çalıştırılacak şekilde tetiklerken değerini image seçebilirsiniz.

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ıldığında Havuz Görüntüsü'ne tıklayın. Seçim yapmazsanız 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şullu olarak, ölçütleri karşılıyorsa YAML'nin if bir bölümü çalıştırılır.

Hangi adımların çalıştırdığını belirlemek için parametreleri kullanma

Bu işlem hattı, testişlem hattında test çalıştırılıp çalıştırılmayacağını denetlemek için kullanılabilen ikinci bir boole parametresi ekler. değeri test true olduğunda, Tüm testleri çalıştırma çıkışını veren adım çalıştırılı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"

Hangi yapılandırmanın kullanılacağını ayarlamak için parametreleri kullanma

Ayrıca, hangi işin çalıştırıldığına ayarlamak için parametreleri de kullanabilirsiniz. Bu örnekte, bir tür olan string parametrenin config değerine bağlı olarak farklı mimariler oluşturulur. Varsayılan olarak, hem hem de x86 x64 mimarileri derlenmiştir.

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ılıp çalıştırılmayacağını ayarlamak için parametreleri de kullanabilirsiniz. Bu örnekte, her aşama için dört aşaması ve farklı işleri olan bir işlem hattı vardır. Parametre runPerfTests true ise Performans Testi aşaması çalışır. varsayılan değeri runPerfTests false olduğundan, herhangi bir güncelleştirme olmadan dört aşamadan yalnızca üçü ç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

Parametreler arasında döngü

Dize, sayı ve boole parametrelerinizde döngü de yapabilirsiniz.

Bu örnekte, parametreler arasında döngü yapıp her parametrenin adını ve değerini yazdırırsınız. Dört farklı parametre vardır ve her biri farklı bir türü temsil eder. myStringName tek satırlı bir dizedir. myMultiString çok satırlı bir dizedir. myNumber bir sayıdır. myBoolean boole değeridir. Adımlar bölümünde, betik görevleri her parametrenin anahtarını ve değerini verir.

# 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 nesnesi olup olmadığını denetleme

bir nesne parametresinin değeri olup olmadığını denetlemek için ifadeyi length() 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

stepList parametresiyle adımların listesini dinamik olarak ekleyin

Bu örnekte parametre türü, stepList derleme işlemindeki adımların listesini dinamik olarak eklemek için kullanılır.

  • Ana işlem hattı (azure-pipelines.yml) iki işi tanımlar: derleme ve dağıtma.
  • Derleme işi bir şablon (build.yml) kullanır ve parametresini kullanarak derleme görevlerinin stepList listesini geçirir.
  • Şablon, build.yml parametresinde build_tasks tanımlanan adımları dinamik olarak içerir.
#azure-pipelines.yml

trigger:
- main

jobs:
  - job: build
    displayName: 'Build .NET Core Application'
    pool:
      vmImage: 'ubuntu-latest'

    steps:
      - checkout: self

      - template: build.yml
        parameters:
          build_tasks:
            - task: DotNetCoreCLI@2
              displayName: 'Restore'
              inputs:
                command: 'restore'
                projects: '**/*.csproj'  

            - task: DotNetCoreCLI@2
              displayName: 'Build'
              inputs:
                command: 'build'
                arguments: '--no-restore'
                projects: '**/*.csproj' 

  - job: deploy
    displayName: 'Pack for Azure App Service deployment'
    dependsOn: build
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - download: current
        artifact: drop

Şablon build.yml :

  • stepList türü ve varsayılan boş liste ile parametresini build_tasks tanımlar.
  • .NET Core SDK'sını 6.x olarak ayarlar.
  • parametresindeki build_tasks her adım üzerinde yinelenir.
  • Listede tanımlanan her adımı yürütür build_tasks .
#build.yml

parameters:
  - name: build_tasks
    type: stepList
    default: []

steps:
  - task: UseDotNet@2
    displayName: 'Use .NET Core SDK'
    inputs:
      packageType: 'sdk'
      version: '6.x'

  - ${{ each step in parameters.build_tasks }}:
      - ${{ step }}

  - task: DotNetCoreCLI@2
    displayName: 'Publish'
    inputs:
      command: 'publish'
      arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
      projects: '**/*.csproj'

  - task: PublishBuildArtifacts@1
    displayName: 'Publish Artifact'
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'

Parametre veri türleri

Veri türü Notlar
string Dize
number ile sınırlandırılmış values:olabilir, aksi takdirde sayı benzeri 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ş sırası
deployment tek dağıtım işi
deploymentList dağıtım işlerinin sırası
stage tek bir aşama
stageList aşama dizisi

Step, stepList, job, jobList, deployment, deploymentList, stage ve stageList veri türlerinin tümü standart YAML şema biçimini kullanır. Bu örnek dize, sayı, boole, nesne, adım ve stepList'i içerir.

parameters:
- name: myString  # Define a parameter named 'myString'
  type: string  # The parameter type is string
  default: a string  # Default value is 'a string'

- name: myMultiString  # Define a parameter named 'myMultiString'
  type: string  # The parameter type is string
  default: default  # Default value is 'default'
  values:  # Allowed values for 'myMultiString'
  - default  
  - ubuntu  

- name: myNumber  # Define a parameter named 'myNumber'
  type: number  # The parameter type is number
  default: 2  # Default value is 2
  values:  # Allowed values for 'myNumber'
  - 1  
  - 2  
  - 4  
  - 8  
  - 16  

- name: myBoolean  # Define a parameter named 'myBoolean'
  type: boolean  # The parameter type is boolean
  default: true  # Default value is true

- name: myObject  # Define a parameter named 'myObject'
  type: object  # The parameter type is object
  default:  # Default value is an object with nested properties
    foo: FOO  # Property 'foo' with value 'FOO'
    bar: BAR  # Property 'bar' with value 'BAR'
    things:  # Property 'things' is a list
    - one  
    - two  
    - three  
    nested:  # Property 'nested' is an object
      one: apple  # Property 'one' with value 'apple'
      two: pear  # Property 'two' with value 'pear'
      count: 3  # Property 'count' with value 3

- name: myStep  # Define a parameter named 'myStep'
  type: step  # The parameter type is step
  default:  # Default value is a step
    script: echo my step 

- name: mySteplist  # Define a parameter named 'mySteplist'
  type: stepList  # The parameter type is stepList
  default:  # Default value is a list of steps
    - script: echo step one  
    - script: echo step two  

trigger: none  

jobs: 
- job: stepList  # Define a job named 'stepList'
  steps: ${{ parameters.mySteplist }}  # Use the steps from the 'mySteplist' parameter

- job: myStep  # Define a job named 'myStep'
  steps:
    - ${{ parameters.myStep }}  # Use the step from the 'myStep' parameter