Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Parametry modulu runtime umožňují mít větší kontrolu nad hodnotami, které se dají předat do kanálu. S parametry modulu runtime můžete:
- Zadání různých hodnot skriptům a úlohám za běhu
- Řízení typů parametrů, povolených rozsahů a výchozích hodnot
- Dynamické výběr úloh a fází pomocí výrazů šablony
Parametry můžete zadat v šablonách a v potrubí. Parametry mají datové typy, jako je číslo a řetězec, a mohou být omezeny 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ů. Použijte proměnné, pokud potřebujete, aby vaše hodnoty byly během běhu kanálu obecněji dostupné.
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ýchozí hodnota musí být přiřazena v souboru YAML nebo při spuštění kanálu. Pokud nepřiřadíte výchozí hodnotu nebo ji nenastavíte default
false
, použije se první dostupná hodnota.
Pomocí templateContext předejte další vlastnosti fázím, krokům a úlohám, které se používají jako parametry v šabloně.
Použití parametrů v kanálech
Nastavte parametry běhového prostředí na začátku YAML souboru.
Tento ukázkový kanál obsahuje image
parametr se třemi hostovanými agenty jako string
možnosti. V části úloh hodnota určuje agenta z parametru, který se používá ke spuštění úlohy. Hodnota trigger
je nastavená na hodnotu žádná, abyste mohli vybrat hodnotu image
při ručním spuštění kanálu.
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 }}
Na stránce spuštění pipeliny vyberte Spustit pipelinu, abyste ji spustili. Zobrazí se možnost vybrat obrázek fondu. Pokud výběr nevyužíváte, použije se výchozí možnost ubuntu-latest
. Pokud spustíte potrubí z editoru YAML, nebudete mít možnost vybrat si Pool Image.
Použití podmíněných výrazů s parametry
Parametry můžete použít také jako součást podmíněné logiky. Podmíněné výrazy způsobí, že se část YAML spustí, pokud splní if
kritéria.
Pomocí parametrů určete, které kroky se mají spustit
Tento kanál přidá druhý logický parametr, test
který se dá použít k řízení, jestli chcete spustit testy v kanálu nebo ne. Pokud je hodnota test
pravdivá, proběhne krok, který zobrazí 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žité konfigurace
K nastavení spuštění úlohy můžete použít také parametry. V tomto příkladu se různé architektury staví v závislosti na hodnotě parametru config
, který je typu string
. Ve výchozím nastavení se sestavují jak architektury x86
, tak 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 pipeline se čtyřmi fázemi a různými úkoly pro každou fázi. Fáze testu výkonnosti se spustí, pokud je parametr runPerfTests
pravdivý. Výchozí hodnota runPerfTests
je false, takže bez aktualizací se spustí pouze 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é iterovat přes vaše ř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ý z nich představuje jiný typ.
myStringName
je řetězec s jedním řádkem.
myMultiString
je víceřádkový řetězec.
myNumber
je číslo.
myBoolean
je logická hodnota. V části kroků ú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ýrazu length()
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
Dynamické zahrnutí seznamu kroků s parametrem stepList
V tomto příkladu se typ parametru stepList
používá k dynamickému zahrnutí seznamu kroků v procesu sestavení.
- Hlavní potrubí (
azure-pipelines.yml
) definuje dvě úlohy: sestavení a nasazení. - Úloha sestavení používá šablonu (
build.yml
) a předá seznam úkolů sestavení pomocí parametrustepList
. - Šablona
build.yml
dynamicky zahrnuje kroky definované v parametrubuild_tasks
.
#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
Šablona build.yml
:
- Definuje parametr
build_tasks
s typem stepList a výchozím prázdným seznamem. - Nastaví sadu .NET Core SDK na 6.x.
- Iteruje jednotlivé kroky v parametru
build_tasks
. - Provede každý krok definovaný v
build_tasks
seznamu.
#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'
Datové typy parametrů
Důležité
Nová funkce datového typu stringList se bude zavádět v příštím měsíci.
Datový typ | Poznámky |
---|---|
string |
řetězec |
stringList |
seznam položek, ze kterého lze vybrat více položek. Není k dispozici v šablonách |
number |
může být omezen na values: , jinak je přijat jakýkoli řetězec podobný číslu. |
boolean |
true nebo false |
object |
libovolná struktura YAML |
step |
jeden krok |
stepList |
posloupnost kroků |
job |
jedna úloha |
jobList |
pořadí úloh |
deployment |
jediná úloha nasazení |
deploymentList |
posloupnost úloh nasazení |
stage |
jedna fáze |
stageList |
posloupnost fází |
Všechny step
, stepList
, job
, jobList
, deployment
, deploymentList
, stage
, stringList
a stageList
datové typy používají standardní formát schématu YAML. Tento příklad zahrnuje string
, , number
boolean
, object
, step
, a stepList
.
Poznámka:
Datový stringList
typ není v šablonách k dispozici.
object
Místo toho použijte datový typ v šablonách.
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}}