Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Параметры среды выполнения обеспечивают больше контроля над значениями, передаваемыми в конвейер. С помощью параметров среды выполнения можно:
- Предоставление различных значений скриптам и задачам во время выполнения
- Типы параметров управления, допустимые диапазоны и значения по умолчанию
- Динамическое выделение заданий и этапов с помощью выражений шаблона
Параметры можно указать в шаблонах и конвейере. Параметры имеют такие типы данных, как число и строка, и они могут быть ограничены подмножеством значений. Раздел parameters в YAML определяет доступные параметры.
Параметры доступны только во время синтаксического анализа шаблона. Они расширяются перед запуском конвейера, заменяя значения, окруженные значениями ${{ }} параметров. Используйте переменные , если значения должны быть доступны во время выполнения конвейера.
Примечание.
Это руководство не относится к классическим конвейерам. Параметры в классических конвейерах см. в разделе "Параметры процесса" (классическая модель).
Параметры должны содержать имя и тип данных. Невозможно сделать параметры необязательными. Необходимо назначить значение по умолчанию в файле YAML или при запуске конвейера. Если вы не назначаете значение по умолчанию или задаете значение defaultfalse, используется первое доступное значение.
Используйте templateContext для передачи дополнительных свойств этапам, шагам и заданиям, используемым в качестве параметров в шаблоне.
Какова разница между параметрами и переменными?
В следующей таблице перечислены основные различия между параметрами и переменными в Azure Pipelines.
| Функция | Параметры | Переменные |
|---|---|---|
| Время оценки | Синтаксический анализ шаблона (очередь) | Оценка зависит от синтаксиса. Переменные, определенные с помощью синтаксиса макросов ($(var)) вычисляют во время выполнения перед выполнением задачи и используются в сценариях и задачах. Переменные, определенные с помощью выражений среды выполнения ($[variables.var]) оцениваются перед выполнением задания или этапа и используются в условиях или динамическом назначении переменных. |
| Изменчивость | Неизменяемый после очереди | Определяемые пользователем, среды и выходные переменные можно динамически обновлять во время выполнения конвейера. |
| Воздействие пользовательского интерфейса во время выполнения | Показан в пользовательском интерфейсе конвейера запуска и может быть задан перед выполнением | Предоставляется во время выполнения, если задано в пользовательском интерфейсе конвейера как переопределяется |
| Значения секретов | Поддержка секретных значений не поддерживается | Можно задать как секреты |
Использование параметров в конвейерах
Задайте параметры среды выполнения в начале ФАЙЛА YAML.
В этом примере конвейер включает image параметр с тремя размещенными агентами в качестве string параметров. В разделе заданий значение 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.
Использование условных условий с параметрами
Вы также можете использовать параметры в рамках условной логики. При использовании условных условий часть 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
Проверка пустого объекта параметра
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 |
строка |
stringList |
Список элементов, из которого можно выбрать несколько. Недоступно в шаблонах |
number |
может быть ограничено values:, в противном случае принимается любая строка, похожая на число. |
boolean |
true или false |
object |
любая структура YAML |
step |
один шаг |
stepList |
последовательность шагов |
job |
одно задание |
jobList |
последовательность заданий |
deployment |
одно задание развертывания |
deploymentList |
последовательность заданий развертывания |
stage |
один этап |
stageList |
последовательность этапов |
Типы данных step, stepList, job, jobList, deployment, deploymentList, stage, stringList и stageList используют стандартный формат схемы YAML. Этот пример включает string, number, boolean, object, step и stepList.
Примечание.
Тип stringList данных недоступен в шаблонах. Используйте тип данных object в шаблонах вместо этого.
parameters:
- name: myString # Define a parameter named 'myString'
type: string # The parameter type is string
default: a string # Default value is 'a string'
- name: myMultiString # Define a parameter named 'myMultiString'
type: string # The parameter type is string
default: default # Default value is 'default', only one default
values: # Allowed values for 'myMultiString'
- default
- ubuntu
- name: myStringlist # Define a parameter named 'myStringlist'
type: stringList # The parameter type is stringList
displayName: Regions
values: # Allowed values for 'myStringlist'
- WUS
- CUS
- EUS
default: # Default values
- WUS
- CUS
- name: myNumber # Define a parameter named 'myNumber'
type: number # The parameter type is number
default: 2 # Default value is 2
values: # Allowed values for 'myNumber'
- 1
- 2
- 4
- 8
- 16
- name: myBoolean # Define a parameter named 'myBoolean'
type: boolean # The parameter type is boolean
default: true # Default value is true
- name: myObject # Define a parameter named 'myObject'
type: object # The parameter type is object
default: # Default value is an object with nested properties
foo: FOO # Property 'foo' with value 'FOO'
bar: BAR # Property 'bar' with value 'BAR'
things: # Property 'things' is a list
- one
- two
- three
nested: # Property 'nested' is an object
one: apple # Property 'one' with value 'apple'
two: pear # Property 'two' with value 'pear'
count: 3 # Property 'count' with value 3
- name: myStep # Define a parameter named 'myStep'
type: step # The parameter type is step
default: # Default value is a step
script: echo my step
- name: mySteplist # Define a parameter named 'mySteplist'
type: stepList # The parameter type is stepList
default: # Default value is a list of steps
- script: echo step one
- script: echo step two
trigger: none
jobs:
- job: stepList # Define a job named 'stepList'
steps: ${{ parameters.mySteplist }} # Use the steps from the 'mySteplist' parameter
- job: myStep # Define a job named 'myStep'
steps:
- ${{ parameters.myStep }} # Use the step from the 'myStep' parameter
- job: stringList # Define a job named 'stringList'
steps:
- ${{ each region in parameters.myStringlist }}:
- script: echo ${{region}}
Рекомендации по обеспечению безопасности параметров
При использовании параметров среды выполнения в Azure Pipelines не передают секреты или конфиденциальные значения в качестве входных данных параметров. Значения параметров расширяются во время синтаксического анализа шаблона и могут быть предоставлены в журналах конвейера или выходных данных.
Всегда проверяйте и ограничивайте допустимые значения параметров, чтобы предотвратить внедрение непредвиденных или небезопасных входных данных. Следуйте принципу наименьших привилегий при предоставлении доступа к ресурсам конвейера.
Для учетных данных, маркеров или других конфиденциальных данных используйте переменные конвейера, помеченные как секреты и хранящиеся в Azure Key Vault, пользовательском интерфейсе конвейера или группах переменных. Дополнительные сведения см. в статье "Защита секретов в Azure Pipelines".