Runtimeparameters
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Met runtimeparameters hebt u meer controle over welke waarden kunnen worden doorgegeven aan een pijplijn. Met runtimeparameters kunt u het volgende doen:
- Verschillende waarden opgeven voor scripts en taken tijdens runtime
- Parametertypen, toegestane bereiken en standaardinstellingen voor besturingselementen
- Taken en fasen dynamisch selecteren met sjabloonexpressies
U kunt parameters opgeven in sjablonen en in de pijplijn. Parameters hebben gegevenstypen zoals getal en tekenreeks, en ze kunnen worden beperkt tot een subset van waarden. De parameters
sectie in een YAML definieert welke parameters beschikbaar zijn.
Parameters zijn alleen beschikbaar tijdens het parseren van sjablonen. Parameters worden uitgevouwen vlak voordat de pijplijn wordt uitgevoerd, zodat waarden tussen ${{ }}
de parameters worden vervangen door parameterwaarden. Gebruik variabelen als u wilt dat uw waarden breder beschikbaar zijn tijdens de pijplijnuitvoering.
Notitie
Deze richtlijnen zijn niet van toepassing op klassieke pijplijnen. Zie Procesparameters (klassiek) voor parameters in klassieke pijplijnen.
Parameters moeten een naam en gegevenstype bevatten. Parameters kunnen niet optioneel zijn. Er moet een standaardwaarde worden toegewezen in uw YAML-bestand of wanneer u uw pijplijn uitvoert. Als u geen standaardwaarde toewijst of instelt default
op false
, wordt de eerste beschikbare waarde gebruikt.
Gebruik templateContext om extra eigenschappen door te geven aan fasen, stappen en taken die worden gebruikt als parameters in een sjabloon.
Parameters gebruiken in pijplijnen
Stel runtimeparameters in aan het begin van een YAML.
Deze voorbeeldpijplijn bevat een image
parameter met drie gehoste agents als string
opties. In de sectie Taken geeft de pool
waarde de agent op van de parameter die wordt gebruikt om de taak uit te voeren. De trigger
is ingesteld op geen, zodat u de waarde van image
kunt selecteren wanneer u de pijplijn handmatig activeert om uit te voeren.
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 }}
Wanneer de pijplijn wordt uitgevoerd, selecteert u de poolinstallatiekopieën. Als u geen selectie maakt, wordt de standaardoptie ubuntu-latest
gebruikt.
Voorwaardelijk gebruik met parameters
U kunt ook parameters gebruiken als onderdeel van voorwaardelijke logica. Met voorwaardelijk wordt een deel van een YAML uitgevoerd als deze voldoet aan de if
criteria.
Parameters gebruiken om te bepalen welke stappen worden uitgevoerd
Met deze pijplijn wordt een tweede booleaanse parameter toegevoegd, test
, die kan worden gebruikt om te bepalen of er tests in de pijplijn moeten worden uitgevoerd. Wanneer de waarde van test
true is, wordt de stap uitgevoerd die Alle tests uitvoeren als resultaat geeft.
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"
Parameters gebruiken om in te stellen welke configuratie wordt gebruikt
U kunt ook parameters gebruiken om in te stellen welke taak wordt uitgevoerd. In dit voorbeeld worden verschillende architecturen gebouwd, afhankelijk van de waarde van config
de parameter, wat een string
type is. Standaard worden zowel de x86
architecturen als x64
de architecturen gebouwd.
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...
Een fase selectief uitsluiten
U kunt ook parameters gebruiken om in te stellen of een fase wordt uitgevoerd. In dit voorbeeld is er een pijplijn met vier fasen en verschillende taken voor elke fase. De fase Prestatietest wordt uitgevoerd als de parameter runPerfTests
waar is. De standaardwaarde van runPerfTests
is false, dus zonder updates worden slechts drie van de vier fasen uitgevoerd.
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
Parameters doorlopen
U kunt ook de parameters tekenreeks, getal en Booleaanse waarde doorlopen.
In dit voorbeeld doorloopt u parameters en drukt u de naam en waarde van elke parameter af. Er zijn vier verschillende parameters die elk een ander type vertegenwoordigen. myStringName
is een tekenreeks met één regel. myMultiString
is een tekenreeks met meerdere regels. myNumber
is a number. myBoolean
is een Booleaanse waarde. In de sectie Stappen voeren de scripttaken de sleutel en waarde van elke parameter uit.
# 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
Controleren op een leeg parameterobject
U kunt de length()
expressie gebruiken om te controleren of een objectparameter geen waarde heeft.
parameters:
- name: foo
type: object
default: []
steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
- script: echo Foo is empty
displayName: Foo is empty
Parametergegevenstypen
Gegevenstype | Notities |
---|---|
string |
tekenreeks |
number |
kan worden beperkt tot values: , anders wordt elke getalachtige tekenreeks geaccepteerd |
boolean |
true of false |
object |
elke YAML-structuur |
step |
één stap |
stepList |
reeks stappen |
job |
één taak |
jobList |
volgorde van taken |
deployment |
één implementatietaak |
deploymentList |
volgorde van implementatietaken |
stage |
één fase |
stageList |
opeenvolging van fasen |
De gegevenstypen step, stepList, job, jobList, deployment, deploymentList, stage en stageList maken allemaal gebruik van de standaard YAML-schema-indeling. Dit voorbeeld omvat tekenreeks, getal, booleaanse waarde, object, stap en 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 }}
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor