Parametry modulu runtime

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

Parametry modulu runtime umožňují větší kontrolu nad tím, jaké hodnoty je možné předávat kanálu. Pomocí parametrů modulu runtime můžete:

  • Zadání různých hodnot skriptům a úlohám za běhu
  • Typy parametrů řízení, povolené rozsahy a výchozí hodnoty
  • Dynamické výběr úloh a fází pomocí výrazů šablony

Parametry můžete zadat v šablonách a v kanálu. Parametry mají datové typy, jako je číslo a řetězec, a dají se omezit na podmnožinu hodnot. Část parameters v YAML definuje, jaké parametry jsou k dispozici.

Parametry jsou k dispozici pouze v době analýzy šablony. Parametry se rozbalí těsně před spuštěním kanálu, takže hodnoty obklopené ${{ }} jsou nahrazeny hodnotami parametrů. Proměnné použijte, pokud potřebujete, aby vaše hodnoty byly během spuštění kanálu dostupnější.

Poznámka

Tyto pokyny se nevztahují na klasické kanály. Parametry v klasických kanálech najdete v tématu Parametry procesu (klasické).

Parametry musí obsahovat název a datový typ. Parametry nemohou být volitelné. V souboru YAML nebo při spuštění kanálu je potřeba přiřadit výchozí hodnotu. Pokud nepřiřadíte výchozí hodnotu nebo nastavíte default na false, použije se první dostupná hodnota.

Použití templateContext k předání dodatečných vlastností fázím, krokům a úlohám, které se používají jako parametry v šabloně.

Použití parametrů v kanálech

Nastavte parametry modulu runtime na začátku YAML.

Tento ukázkový kanál obsahuje parametr se image třemi hostovanými agenty jako string možnostmi. V části pool úlohy hodnota určuje agenta z parametru použitého ke spuštění úlohy. Vlastnost trigger je nastavená na žádný, takže při ruční aktivaci kanálu ke spuštění můžete vybrat hodnotu image .

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

Když se kanál spustí, vyberete image fondu. Pokud nevybídnete, použije se výchozí možnost ubuntu-latest .

parametry modulu runtime

Použití podmíněných podmínek s parametry

Parametry můžete použít také jako součást podmíněné logiky. S podmínkou se část YAML spustí, pokud splňuje if kritéria.

Použití parametrů k určení spuštěných kroků

Tento kanál přidá druhý logický parametr , testkterý se dá použít k řízení, jestli se mají v kanálu spouštět testy. Pokud je hodnota test true, spustí se krok s výstupem Spuštění všech testů .

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"

Použití parametrů k nastavení používané konfigurace

Pomocí parametrů můžete také nastavit, která úloha se spustí. V tomto příkladu se různé architektury vytvářejí v závislosti na hodnotě parametru config , což je string typ. Ve výchozím nastavení se sestavují x86 architektury i x64 .

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

Selektivní vyloučení fáze

Pomocí parametrů můžete také nastavit, jestli se fáze spustí. V tomto příkladu je kanál se čtyřmi fázemi a různými úlohami pro každou fázi. Fáze testu výkonnosti se spustí, pokud má parametr runPerfTests hodnotu true. Výchozí hodnota runPerfTests je false, takže bez aktualizací se spustí jenom tři ze čtyř fází.

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

Procházení parametrů ve smyčce

Můžete také procházet řetězcové, číselné a logické parametry.

V tomto příkladu procházíte parametry a vytisknete název a hodnotu každého parametru. Existují čtyři různé parametry a každý představuje jiný typ. myStringName je jednořádkový řetězec. myMultiString je víceřádkový řetězec. myNumber is a number. myBoolean je logická hodnota. V části steps (Kroky) úlohy skriptu vypíše klíč a hodnotu každého parametru.

# 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

Kontrola prázdného objektu parametru

Pomocí výrazulength() můžete zkontrolovat, jestli parametr objektu nemá žádnou hodnotu.

parameters:
- name: foo
  type: object
  default: []

steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
  - script: echo Foo is empty
    displayName: Foo is empty

Datové typy parametrů

Datový typ Poznámky
string řetězec
number může být omezený na values:, jinak se akceptuje jakýkoli řetězec typu číslování.
boolean true nebo false
object libovolná struktura YAML
step jeden krok
stepList posloupnost kroků
job jedna úloha
jobList posloupnost úloh
deployment jedna úloha nasazení
deploymentList posloupnost úloh nasazení
stage jedna fáze
stageList posloupnost fází

Všechny datové typy step, stepList, jobList, deployment, deploymentList, stage a stageList používají standardní formát schématu YAML. Tento příklad zahrnuje řetězec, číslo, logickou hodnotu, objekt, krok a stepList.

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