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 | Azure DevOps Server 2022
Parametry runtime vám poskytují větší kontrolu nad hodnotami, které předáváte potrubí. Pomocí parametrů 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 při analýze šablony. Rozšíří se před spuštěním kanálu a nahradí hodnoty obklopené ${{ }} hodnotami parametrů. Použijte proměnné, pokud vaše hodnoty musí být dostupné během běhu kanálu.
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 nelze nastavit jako volitelné. Musíte přiřadit výchozí hodnotu v souboru YAML nebo při spuštění kanálu. Pokud nepřiřadíte výchozí hodnotu nebo ji nenastavíte defaultfalse, použije se první dostupná hodnota.
Pomocí templateContext předejte více vlastností fázím, krokům a úlohám používaným jako parametry v šabloně.
Jaký je rozdíl mezi parametry a proměnnými?
Následující tabulka uvádí klíčové rozdíly mezi parametry a proměnnými v Azure Pipelines.
| Vlastnost | Parametry | Proměnné |
|---|---|---|
| Čas vyhodnocení | Analýza šablon (zpracování ve frontě) | Vyhodnocení je závislé na syntaxi. Proměnné definované pomocí syntaxe maker ($(var)) se vyhodnocují za běhu před spuštěním úlohy a používají se ve skriptech a úlohách. Proměnné definované pomocí výrazů modulu runtime ($[variables.var]) se vyhodnocují před spuštěním úlohy nebo fáze a používají se v podmínkách nebo přiřazení dynamické proměnné. |
| Proměnlivost | Neměnné po frontě | Uživatelem definované proměnné, prostředí a výstupní proměnné je možné dynamicky aktualizovat během provádění kanálu. |
| Zobrazení uživatelského rozhraní při spuštění | Zobrazuje se v uživatelském rozhraní kanálu spuštění a dá se nastavit před spuštěním. | Zobrazí se během spuštění, pokud je nastaveno v uživatelském rozhraní pipeline jako přepíratelné. |
| Tajné hodnoty | Žádná podpora tajných hodnot | Dá se nastavit jako tajné informace. |
Použití parametrů v kanálech
Nastavte parametry modulu runtime na začátku souboru YAML.
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 image fondu. Pokud výběr nevyužíváte, použije se výchozí možnost ubuntu-latest . Nelze vybrat obrázek fondu, pokud spustíte svůj datový tok z editoru YAML.
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, který určuje, testjestli se mají spustit testy v kanálu. 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 pokud hodnotu neaktualizujete, spustí se 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
Kontrola prázdného objektu parametru
Pomocí length() zkontrolujte, 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 |
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, , numberboolean, 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}}
Osvědčené postupy zabezpečení parametrů
Při použití parametrů modulu runtime v Azure Pipelines nepředávejte tajné kódy ani citlivé hodnoty jako vstupy parametrů. Hodnoty parametrů se rozšíří při parsování šablony a mohou se zobrazit v protokolech potrubí nebo výstupech.
Vždy ověřte a omezte povolené hodnoty parametrů, aby se zabránilo injektáži neočekávaného nebo nebezpečného vstupu. Při udělování přístupu k prostředkům kanálu dodržujte zásadu nejnižšího oprávnění.
Pro přihlašovací údaje, tokeny nebo jiná důvěrná data použijte proměnné kanálu označené jako tajné kódy a uložené ve službě Azure Key Vault, uživatelském rozhraní kanálu nebo skupinách proměnných. Další informace najdete v tématu Ochrana tajných kódů v Azure Pipelines.