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
.
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 , test
který 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 }}
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro