Laufzeitparameter
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Laufzeitparameter ermöglichen Ihnen mehr Kontrolle darüber, welche Werte an eine Pipeline übergeben werden können. Mit Laufzeitparametern haben Sie folgende Möglichkeiten:
- Unterschiedliche Werte für Skripts und Aufgaben zur Laufzeit bereitstellen
- Steuerelementparametertypen, zulässige Bereiche und Standardwerte
- Dynamisches Auswählen von Aufträgen und Phasen mit Vorlagenausdrücken
Sie können Parameter in Vorlagen und in der Pipeline angeben. Parameter verfügen über Datentypen wie Zahl und Zeichenfolge, und sie können auf eine Teilmenge von Werten beschränkt werden. Der parameters
Abschnitt in einem YAML definiert, welche Parameter verfügbar sind.
Parameter sind nur zur Vorlagenanalysezeit verfügbar. Parameter werden kurz vor der Ausführung der Pipeline erweitert, sodass die von ${{ }}
umgebenen Werte durch Parameterwerte ersetzt werden. Verwenden Sie Variablen , wenn Ihre Werte während der Pipelineausführung breiter verfügbar sein sollen.
Hinweis
Diese Anleitung gilt nicht für klassische Pipelines. Informationen zu Parametern in klassischen Pipelines finden Sie unter Prozessparameter (klassisch).
Parameter müssen einen Namen und einen Datentyp enthalten. Parameter können nicht optional sein. Ein Standardwert muss in Ihrer YAML-Datei oder beim Ausführen der Pipeline zugewiesen werden. Wenn Sie keinen Standardwert zuweisen oder auf false
festlegendefault
, wird der erste verfügbare Wert verwendet.
Verwenden Sie templateContext , um zusätzliche Eigenschaften an Phasen, Schritte und Aufträge zu übergeben, die als Parameter in einer Vorlage verwendet werden.
Verwenden von Parametern in Pipelines
Legen Sie Laufzeitparameter am Anfang eines YAML fest.
Diese Beispielpipeline enthält einen image
Parameter mit drei gehosteten Agents als string
Optionen. Im Abschnitt aufträge gibt der Wert den pool
Agent aus dem Parameter an, der zum Ausführen des Auftrags verwendet wird. Ist trigger
auf "none" festgelegt, sodass Sie den Wert von image
auswählen können, wenn Sie die Pipeline zur Ausführung manuell auslösen.
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 }}
Wenn die Pipeline ausgeführt wird, wählen Sie das Poolimage aus. Wenn Sie keine Auswahl treffen, wird die Standardoption ubuntu-latest
verwendet.
Verwenden von Bedingungen mit Parametern
Sie können Parameter auch als Teil der bedingten Logik verwenden. Mit Bedingungen wird ein Teil eines YAML ausgeführt, wenn er die if
Kriterien erfüllt.
Verwenden von Parametern, um zu bestimmen, welche Schritte ausgeführt werden
Diese Pipeline fügt einen zweiten booleschen Parameter hinzu, der verwendet werden kann, um zu steuern, test
ob Tests in der Pipeline ausgeführt werden sollen oder nicht. Wenn der Wert von test
true ist, wird der Schritt ausgeführt, in dem alle Tests ausgeführt werden.
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"
Verwenden von Parametern zum Festlegen der verwendeten Konfiguration
Sie können auch Parameter verwenden, um festzulegen, welcher Auftrag ausgeführt wird. In diesem Beispiel werden verschiedene Architekturen abhängig vom Wert des config
Parameters erstellt, bei dem es sich um einen string
Typ handelt. Standardmäßig werden sowohl die x86
Architektur als x64
auch die Architektur erstellt.
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...
Selektives Ausschließen einer Phase
Sie können auch Parameter verwenden, um festzulegen, ob eine Phase ausgeführt wird. In diesem Beispiel gibt es eine Pipeline mit vier Phasen und unterschiedlichen Aufträgen für jede Phase. Die Leistungstestphase wird ausgeführt, wenn der Parameter runPerfTests
true ist. Der Standardwert von runPerfTests
ist false, sodass ohne Updates nur drei der vier Phasen ausgeführt werden.
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
Schleifen von Parametern
Sie können auch Ihre Zeichenfolgen-, Zahlen- und booleschen Parameter durchlaufen.
In diesem Beispiel durchlaufen Sie Parameter und geben den Namen und den Wert der einzelnen Parameter aus. Es gibt vier verschiedene Parameter, die jeweils einen anderen Typ darstellen. myStringName
ist eine einzeilige Zeichenfolge. myMultiString
ist eine mehrzeilige Zeichenfolge. myNumber
is a number. myBoolean
ist ein boolescher Wert. Im Abschnitt "Schritte" geben die Skriptaufgaben den Schlüssel und den Wert der einzelnen Parameter aus.
# 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
Suchen nach einem leeren Parameterobjekt
Sie können den length()
Ausdruck verwenden, um zu überprüfen, ob ein Objektparameter über keinen Wert verfügt.
parameters:
- name: foo
type: object
default: []
steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
- script: echo Foo is empty
displayName: Foo is empty
Parameterdatentypen
Datentyp | Notizen |
---|---|
string |
Zeichenfolge |
number |
kann auf values: beschränkt sein, andernfalls wird eine beliebige zahlenähnliche Zeichenfolge akzeptiert |
boolean |
true oder false |
object |
beliebige YAML-Struktur |
step |
ein einzelner Schritt |
stepList |
Sequenz von Schritten |
job |
ein einzelner Auftrag |
jobList |
Sequenz von Aufträgen |
deployment |
ein einzelner Bereitstellungsauftrag |
deploymentList |
Sequenz von Bereitstellungsaufträgen |
stage |
eine einzelne Stage |
stageList |
Sequenz von Stages |
Die Datentypen „step“, „stepList“, „jobList“, „deployment“, „deploymentList“, „stage“ und „stageList“ verwenden alle standardmäßige YAML-Schemaformate. Dieses Beispiel umfasst „string“, „number“, „boolean“, „object“, „step“ und „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.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für