Parametry běhu

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.

runtime parametry

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.