Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Med körningsparametrar får du mer kontroll över de värden som du skickar till en pipeline. Med körningsparametrar kan du:
- Ange olika värden för skript och uppgifter vid körningstid
- Kontrollera parametertyper, tillåtna intervall och standardvärden
- Välj jobb och steg dynamiskt med malluttryck
Du kan ange parametrar i mallar och i pipelinen. Parametrar har datatyper som tal och sträng, och de kan begränsas till en delmängd av värden. Avsnittet parameters i en YAML definierar vilka parametrar som är tillgängliga.
Parametrar är endast tillgängliga under mallparsning. De expanderar innan pipelinen körs och ersätter värden omgivna av ${{ }} med parametervärden. Använd variabler om dina värden måste vara tillgängliga under hela pipelinekörningen.
Kommentar
Den här vägledningen gäller inte för klassiska pipelines. För parametrar i klassiska pipelines, se Processparametrar (klassisk).
Parametrarna måste innehålla ett namn och en datatyp. Du kan inte göra parametrar valfria. Du måste tilldela ett standardvärde i YAML-filen eller när du kör pipelinen. Om du inte tilldelar ett standardvärde eller anger default till falseanvänds det första tillgängliga värdet.
Använd templateContext för att skicka fler egenskaper till steg, steg och jobb som används som parametrar i en mall.
Vad är skillnaden mellan parametrar och variabler?
I följande tabell visas de viktigaste skillnaderna mellan parametrar och variabler i Azure Pipelines.
| Feature | Parameterar | Variabler |
|---|---|---|
| Utvärderingstid | Mallparsning (kö) | Utvärderingen är syntaxberoende. Variabler som definieras med makrosyntax ($(var)) utvärderas vid körning innan en aktivitet körs och används i skript och aktiviteter. Variabler som definieras med körningsuttryck ($[variables.var]) utvärderas innan ett jobb eller en fas körs och används i villkor eller dynamisk variabeltilldelning. |
| Föränderlighet | Oföränderlig efter kö | Användardefinierade variabler, miljö- och utdatavariabler kan uppdateras dynamiskt under pipelinekörning |
| Exponering av användargränssnitt under körning | Visas i användargränssnittet för körningspipelinen och kan ställas in före en körning | Exponeras under körning om det anges i Pipeline-användargränssnittet som åsidosättande |
| Hemliga värden | Inget stöd för hemliga värden | Kan anges som hemligheter |
Använd parametrar i pipelines
Ange körningsparametrar i början av en YAML-fil.
Den här exempelpipelinen innehåller en image parameter med tre värdbaserade agenter som string alternativ. I avsnittet Jobb anger pool-värdet agenten från den parameter som används för att köra jobbet.
trigger är inställt på 'ingen' så att du kan välja värdet image när du manuellt utlöser körning av pipelinen.
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 }}
På sidan pipelinekörningar väljer du Kör pipeline för att köra pipelinen. Du ser alternativet för att välja Poolbild. Om du inte gör något val används standardalternativet ubuntu-latest . Du kan inte välja en poolbild om du kör din pipeline från YAML-redigeraren.
Använda villkor med parametrar
Du kan också använda parametrar som en del av villkorsstyrd logik. Med villkor körs en del av en YAML-fil om den if uppfyller kriterierna.
Använda parametrar för att avgöra vilka steg som körs
Den här pipelinen lägger till en andra boolesk parameter, test, som styr om tester ska köras i pipelinen. När test är sant körs steget som resulterar i Kör alla tester.
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"
Använd parametrar för att ange vilken konfiguration som används
Du kan också använda parametrar för att ange vilket jobb som ska köras. I det här exemplet bygger olika arkitekturer beroende på värdet för config parametern, som är en string typ. Som standard byggs både arkitekturerna x86 och 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...
Selektivt exkludera ett stadium
Du kan också använda parametrar för att ange om en fas körs. I det här exemplet finns det en pipeline med fyra steg och olika jobb för varje steg. Prestandatestfasen körs om parametern runPerfTests är sann. Standardvärdet runPerfTests för är falskt, så endast tre av de fyra stegen körs om du inte uppdaterar värdet.
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
Sök efter ett tomt parameterobjekt
Använd length() för att kontrollera om en objektparameter inte har något värde.
parameters:
- name: foo
type: object
default: []
steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
- script: echo Foo is empty
displayName: Foo is empty
Parameterdatatyper
| Datatyp | Anteckningar |
|---|---|
string |
sträng |
stringList |
en lista med objekt där flera kan väljas. Inte tillgängligt i mallar |
number |
kan begränsas till values:, annars accepteras en talliknande sträng |
boolean |
true eller false |
object |
någon YAML-struktur |
step |
ett enda steg |
stepList |
sekvens med steg |
job |
ett enda jobb |
jobList |
sekvens av jobb |
deployment |
ett enda distributionsjobb |
deploymentList |
sekvens med distributionsjobb |
stage |
en enda fas |
stageList |
sekvens av faser |
Datatyperna step, , stepListjob, jobList, deploymentdeploymentList, stageoch stringListanvänder stageList yaml-standardschemaformat. I det här exemplet ingår string, number, boolean, object, stepoch stepList.
Kommentar
Datatypen stringList är inte tillgänglig i mallar.
object Använd datatypen i mallar i stället.
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}}
Metodtips för parametersäkerhet
När du använder körningsparametrar i Azure Pipelines ska du inte skicka hemligheter eller känsliga värden som parameterindata. Parametervärden expanderas vid mallparsningstiden och kan exponeras i pipelineloggar eller utdata.
Verifiera och begränsa alltid tillåtna parametervärden för att förhindra inmatning av oväntade eller osäkra indata. Följ principen om lägsta behörighet när du beviljar åtkomst till pipelineresurser.
För autentiseringsuppgifter, token eller andra konfidentiella data använder du pipelinevariabler som markerats som hemligheter och lagras i Azure Key Vault, pipelinegränssnittet eller variabelgrupper. Mer information finns i Skydda hemligheter i Azure Pipelines.