Ç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ırmaları sayfasında İşlem hattını çalıştır'ı seçerek işlem hattını çalıştırın. Havuz Resmi'ni seçme seçeneğini görürsünüz. Seçim yapmazsanız varsayılan seçenek ubuntu-latest
kullanılır. İşlem hattınızı YAML düzenleyicisinden çalıştırırsanız Havuz Görüntüsü seçme seçeneğiniz olmaz.
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ı, test
iş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örevlerininstepList
listesini geçirir. - Şablon,
build.yml
parametresindebuild_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