Körningsparametrar

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Med körningsparametrar kan du få mer kontroll över vilka värden som kan skickas till en pipeline. Med körningsparametrar kan du:

  • Ange olika värden för skript och uppgifter vid körning
  • Kontrollera parametertyper, tillåtna intervall och standardvärden
  • Välj jobb och faser 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 vid mallparsningstid. Parametrarna expanderas precis innan pipelinen körs så att värden som omges av ${{ }} ersätts med parametervärden. Använd variabler om du behöver dina värden för att vara mer allmänt tillgängliga under pipelinekörningen.

Anteckning

Den här vägledningen gäller inte för klassiska pipelines. Parametrar i klassiska pipelines finns i Processparametrar (klassiska).

Parametrarna måste innehålla ett namn och en datatyp. Parametrar kan inte vara valfria. Ett standardvärde måste tilldelas 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 extra egenskaper till steg, steg och jobb som används som parametrar i en mall.

Använda parametrar i pipelines

Ange körningsparametrar i början av en YAML.

Den här exempelpipelinen innehåller en image parameter med tre värdbaserade agenter som string alternativ. I jobbavsnittet pool anger värdet agenten från parametern som används för att köra jobbet. trigger Är inställt på none så att du kan välja värdet image för när du manuellt utlöser pipelinen för körning.

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

När pipelinen körs väljer du Poolbild. Om du inte gör något val används standardalternativet ubuntu-latest .

körningsparametrar

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 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 kan användas för att styra om tester ska köras i pipelinen eller inte. När värdet test för är sant körs steget som matar ut Körning av 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, vilket är en string typ. Som standard bygger 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 steg

Du kan också använda parametrar för att ange om en fas ska köras. I det här exemplet finns det en pipeline med fyra steg och olika jobb för varje steg. Fasen Prestandatest körs om parametern runPerfTests är sann. Standardvärdet runPerfTests för är falskt, så utan uppdateringar körs bara tre av de fyra faserna.

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

Loopa igenom parametrar

Du kan också loopa igenom dina sträng-, nummer- och booleska parametrar.

I det här exemplet loopar du igenom parametrar och skriver ut namn och värde för varje parameter. Det finns fyra olika parametrar och var och en representerar en annan typ. myStringName är en enradssträng. myMultiString är en sträng med flera rader. myNumber is a number. myBoolean är ett booleskt värde. I stegavsnittet matar skriptuppgifterna ut nyckeln och värdet för varje parameter.

# 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

Sök efter ett tomt parameterobjekt

Du kan använda length()uttrycket 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 Kommentarer
string sträng
number kan begränsas till values:, annars accepteras en talliknande sträng
boolean true eller false
object valfri YAML-struktur
step ett enda steg
stepList sekvens med steg
job ett enda jobb
jobList sekvens med jobb
deployment ett enda distributionsjobb
deploymentList sekvens med distributionsjobb
stage ett enda steg
stageList sekvens av faser

Datatyperna step, stepList, job, jobList, deployment, deploymentList, stage och stageList använder alla yaml-standardschemaformat. Det här exemplet innehåller sträng, tal, booleskt värde, objekt, steg och 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 }}