Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 açılır, böylece ${{ }}
ile çevrelenen değerler parametre değerleriyle değiştirilir. Değerlerinizin işlem hattı çalıştırmanız sırasında daha geniş çapta erişilebilir 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 default
öğesini false
olarak ayarlamıyorsanız, 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.
Boru 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 image
içeren bir string
parametre içerir. İşler bölümünde, pool
değeri, işi çalıştırmak için kullanılan parametreden hangi aracının belirlendiğini belirtir.
trigger
, işlem hattınızı manuel olarak tetiklediğinizde image
değerini seçebilmeniz için 'yok' 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ırmaları sayfasından, İş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şullarla, ölçütleri karşılıyorsa YAML'nin if
bir bölümü çalıştırılır.
Hangi adımların çalıştırılacağı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.
test
değeri true olduğunda, "Tüm testleri çalıştırma" çıktısı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 config
parametrenin string
değerine bağlı olarak farklı mimariler oluşturulur. Varsayılan olarak, hem x86
hem de x64
mimarileri derlenir.
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 üzerinde döngü çalıştırın
Dize, sayı ve boole parametrelerinde de döngü 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
boolean türünde bir değerdir. Adımlar bölümünde, betik görevleri her parametrenin anahtarını ve değerini gösterir.
# 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 görevi tanımlar: oluşturma ve dağıtma. - Derleme işi bir şablon (
build.yml
) kullanır vestepList
parametresini kullanarak derleme görevlerinin bir 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.
-
build_tasks
parametresindeki her bir adım üzerinde yineleme yapılır. - 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 görevi |
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