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.

runtimeparameters

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 }}