Параметры среды выполнения
Azure DevOps Services | Azure DevOps Server 2022 г. | Azure DevOps Server 2020 г.
Параметры среды выполнения позволяют более контролировать, какие значения можно передать в конвейер. С помощью параметров среды выполнения можно:
- Предоставление различных значений скриптам и задачам во время выполнения
- Типы параметров управления, допустимые диапазоны и значения по умолчанию
- Динамический выбор заданий и этапов с помощью выражений шаблона
Параметры можно указать в шаблонах и в конвейере. Параметры имеют такие типы данных, как число и строка, и могут быть ограничены подмножеством значений. В parameters
разделе YAML определяются доступные параметры.
Параметры доступны только во время синтаксического анализа шаблона. Параметры разворачиваются непосредственно перед выполнением конвейера, чтобы значения, заключенные в ${{ }}
, заменялись значениями параметров. Используйте переменные , если необходимо, чтобы значения были более широко доступны во время выполнения конвейера.
Примечание
Это руководство не относится к классическим конвейерам. Параметры в классических конвейерах см. в разделе Параметры процесса (классическая модель).
Параметры должны содержать имя и тип данных. Параметры не могут быть необязательными. Значение по умолчанию необходимо назначить в файле YAML или при запуске конвейера. Если вы не назначите значение по умолчанию или не задали default
false
значение , используется первое доступное значение.
Используйте templateContext для передачи дополнительных свойств этапам, шагам и заданиям, которые используются в качестве параметров в шаблоне.
Использование параметров в конвейерах
Задайте параметры среды выполнения в начале YAML.
Этот пример конвейера включает image
параметр с тремя размещенными агентами в качестве string
параметров. В разделе jobs значение указывает агент из параметра , pool
используемого для запуска задания. Для trigger
параметра задано значение none, чтобы можно было выбрать значение image
при запуске конвейера вручную.
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 }}
При запуске конвейера выберите образ пула. Если вы не делаете выбор, используется параметр ubuntu-latest
по умолчанию.
Использование условных условий с параметрами
Параметры также можно использовать как часть условной логики. При использовании условных условий часть YAML выполняется, если она соответствует if
критериям.
Использование параметров для определения выполняемых шагов
Этот конвейер добавляет второй логический параметр , test
который можно использовать для управления выполнением тестов в конвейере. Если значение test
равно true, шаг, который выводит Выполнение всех тестов , выполняется.
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"
Использование параметров для задания используемой конфигурации
Вы также можете использовать параметры, чтобы указать, какие задания выполняются. В этом примере различные архитектуры создаются в зависимости от значения config
параметра, который является типом string
. По умолчанию создаются x86
как архитектуры, так и 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...
Выборочное исключение этапа
Можно также использовать параметры, чтобы указать, выполняется ли этап. В этом примере есть конвейер с четырьмя этапами и различными заданиями для каждого этапа. Этап теста производительности выполняется, если параметр runPerfTests
имеет значение true. Значение по умолчанию runPerfTests
— false, поэтому без каких-либо обновлений выполняются только три из четырех этапов.
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
Цикл по параметрам
Вы также можете перебирать строковые, числовые и логические параметры.
В этом примере выполняется цикл по параметрам и выводится имя и значение каждого параметра. Существует четыре разных параметра, каждый из которых представляет свой тип. myStringName
является однострочной строкой. myMultiString
является многострочной строкой. myNumber
is a number. myBoolean
— логическое значение. В разделе шагов задачи скрипта выводят ключ и значение каждого параметра.
# 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
Проверка пустого объекта параметра
Выражение можно использовать для length()
проверка, не имеет ли параметр объекта значения.
parameters:
- name: foo
type: object
default: []
steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
- script: echo Foo is empty
displayName: Foo is empty
Типы данных параметров
Тип данных | Примечания |
---|---|
string |
строка |
number |
может быть ограничено , в противном случае принимается любая строка, похожая на values: число. |
boolean |
true или false |
object |
любая структура YAML |
step |
один шаг |
stepList |
последовательность шагов |
job |
одно задание |
jobList |
последовательность заданий |
deployment |
одно задание развертывания |
deploymentList |
последовательность заданий развертывания |
stage |
один этап |
stageList |
последовательность этапов |
Типы данных step, stepList, job, jobList, deployment, deploymentList, stage и stageList используют стандартный формат схемы YAML. Этот пример включает строку, число, логическое значение, объект, шаг и 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 }}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по