Aracılığıyla paylaş


Çalışma zamanı parametreleri

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

Çalışma zamanı parametreleri, işlem hattına geçirdiğiniz değerler üzerinde daha fazla denetim sağlar. Çalışma zamanı parametreleriyle şunları yapabilirsiniz:

  • Çalışma zamanında betiklere ve görevlere farklı değerler sağlayın
  • Parametre türlerini, izin verilen aralıkları ve varsayılan değerleri 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 sırasında kullanılabilir. İşlem hattı çalışmadan önce genişletilir ve ${{ }} ile çevrili değerler, parametre değerleriyle değiştirilir. Değerlerinizin çalışma hattı çalışması boyunca kullanılabilir olması gerekiyorsa 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. Parametreleri isteğe bağlı yapamazsınız. YAML dosyanızda veya işlem hattınızı çalıştırdığınızda varsayılan bir değer atamanız gerekir. 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 daha fazla özellik geçirmek için templateContext kullanın.

Parametreler ve değişkenler arasındaki fark nedir?

Aşağıdaki tabloda, Azure Pipelines'daki parametreler ve değişkenler arasındaki temel farklar vurgulanmaktadır.

Özellik Parametreler Değişkenler
Değerlendirme Zamanı Şablon ayrıştırma (kuyruk) Değerlendirme söz dizimine bağlıdır. Makro söz dizimi ($(var)) ile tanımlanan değişkenler, bir görev çalıştırılıp betiklerde ve görevlerde kullanılmadan önce çalışma zamanında değerlendirilir. Çalışma zamanı ifadeleriyle tanımlanan değişkenler ($[variables.var]) bir iş veya aşama çalıştırmadan önce değerlendirilir ve koşullarda veya dinamik değişken atamasında kullanılır.
Değiştirilebilirlik Kuyruktan sonra değiştirilemez İşlem hattı yürütmesi sırasında kullanıcı tanımlı, ortam ve çıkış değişkenleri dinamik olarak güncelleştirilebilir
Çalıştırma sırasında kullanıcı arabirimini açığa çıkarma Çalıştırma Kuyruğu kullanıcı arabiriminde gösterilir ve çalıştırmadan önce ayarlanabilir. İşlem Hattı arayüzünde geçersiz kılınacak şekilde ayarlandığında, çalışma sırasında açığa çıkar.
Gizli değerler Gizli değerler için destek yok Gizli olarak ayarlanabilir

Boru hatlarında parametreleri kullanma

YAML dosyasının 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 Görüntüsü'ni seçme seçeneğini görürsünüz. Seçim yapmazsanız varsayılan seçenek ubuntu-latest kullanılır. YAML düzenleyicisinden işlem hattınızı çalıştırırsanız Havuz Görüntüsü seçemezsiniz.

çalışma zamanı parametreleri

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ı, testişlem hattında test çalıştırılıp çalıştırılmayacağını denetleyen 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, değeri güncelleştirmediğiniz sürece 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

Boş parametre nesnesi olup olmadığını denetleme

Bir nesne parametresinin length() değeri olup olmadığını denetlemek için ifadesini kullanın.

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 Dize
stringList Bir öğe listesi, birden fazla seçilebilir. Şablonlarda kullanılamaz
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, deploymentListstagestringListve stageList veri türlerinin tümü standart YAML şema biçimini kullanır. Bu örnek string, number, boolean, object, step ve stepList içerir.

Not

Veri stringList türü şablonlarda kullanılamaz. object Bunun yerine şablonlarda veri türünü kullanın.

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', only one default
  values:  # Allowed values for 'myMultiString'
  - default  
  - ubuntu  

- name: myStringlist # Define a parameter named 'myStringlist'
  type: stringList # The parameter type is stringList
  displayName: Regions
  values: # Allowed values for 'myStringlist'
    - WUS
    - CUS
    - EUS
  default: # Default values
    - WUS
    - CUS
    
- 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

- job: stringList  # Define a job named 'stringList'
  steps:
  - ${{ each region in parameters.myStringlist }}:
      - script: echo ${{region}}

Parametre güvenliği en iyi yöntemleri

Azure Pipelines'da çalışma zamanı parametrelerini kullandığınızda, gizli dizileri veya hassas değerleri parametre girişi olarak geçirmeyin. Parametre değerleri şablon ayrıştırma zamanında genişletilir ve işlem hattı günlüklerinde veya çıkışlarında gösterilebilir.

Beklenmeyen veya güvenli olmayan girişin eklenmesini önlemek için her zaman izin verilen parametre değerlerini doğrulayın ve kısıtlayın. İşlem hattı kaynaklarına erişim izni verirken en az ayrıcalık ilkesini izleyin.

Kimlik bilgileri, belirteçler veya diğer gizli veriler için gizli dizi olarak işaretlenen ve Azure Key Vault'ta, İşlem Hattı kullanıcı arabiriminde veya değişken gruplarında depolanan işlem hattı değişkenlerini kullanın. Daha fazla bilgi için bkz. Azure Pipelines'da gizlileri koruma.