Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этапы — это коллекция связанных заданий. По умолчанию этапы выполняются последовательно. Каждый этап начинается только после завершения предыдущего этапа, если иное не указано с помощью свойства dependsOn
.
stages:
- stage: string # Required as first property. ID of the stage.
displayName: string # Human-readable name for the stage.
pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
dependsOn: string | [ string ] # Any stages which must complete before this one.
condition: string # Evaluate this condition expression to determine whether to run this stage.
variables: variables | [ variable ] # Stage-specific variables.
jobs: [ job | deployment | template ] # Jobs which make up the stage.
lockBehavior: sequential | runLatest # Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests.
trigger: manual | automatic # Stage trigger manual or automatic (default).
isSkippable: boolean # Setting false prevents the stage from being skipped. By default it's always true.
templateContext: # Stage related information passed from a pipeline when extending a template.
stages:
- stage: string # Required as first property. ID of the stage.
displayName: string # Human-readable name for the stage.
pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
dependsOn: string | [ string ] # Any stages which must complete before this one.
condition: string # Evaluate this condition expression to determine whether to run this stage.
variables: variables | [ variable ] # Stage-specific variables.
jobs: [ job | deployment | template ] # Jobs which make up the stage.
lockBehavior: sequential | runLatest # Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests.
templateContext: # Stage related information passed from a pipeline when extending a template.
stages:
- stage: string # Required as first property. ID of the stage.
displayName: string # Human-readable name for the stage.
pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
dependsOn: string | [ string ] # Any stages which must complete before this one.
condition: string # Evaluate this condition expression to determine whether to run this stage.
variables: variables | [ variable ] # Stage-specific variables.
jobs: [ job | deployment | template ] # Jobs which make up the stage.
Свойства
строка stage
. Обязательный в качестве первого свойства.
идентификатор этапа.
строка displayName
.
имя, доступное для чтения человеком для этапа.
pool
пула.
пул, где задания на этом этапе будут выполняться, если иное не указано.
строка dependsOn
| строковый список.
Любые этапы, которые должны завершиться до этого. По умолчанию этапы выполняются последовательно в порядке, определенном в конвейере. Укажите dependsOn: []
для этапа, если он не должен зависеть от предыдущего этапа конвейера.
строка condition
.
оценить это выражение условия, чтобы определить, следует ли выполнять этот этап.
variables
переменных.
переменные, относящиеся к этапу.
jobs
задания.
задания, составляющие этап.
строка lockBehavior
.
запросы на блокировку поведения на этом этапе должны быть представлены в отношении других эксклюзивных запросов блокировки. последовательный | runLatest.
строка trigger
.
триггер этапа вручную или автоматически (по умолчанию). вручную | Автоматически.
isSkippable
логические.
параметр false предотвращает пропуск этапа. По умолчанию это всегда верно.
templateContext
templateContext.
сведения, связанные с этапом, передаваемые из конвейера при расширении шаблона. Дополнительные сведения о templateContext
см. в статье Расширенные шаблоны конвейеров YAML теперь можно передавать сведения о контексте для этапов, заданий и развертываний и шаблонов. Используйте templateContext для передачи свойств в шаблоны.
Замечания
Дополнительные сведения о templateContext
см. в статье Расширенные шаблоны конвейеров YAML теперь можно передавать сведения о контексте для этапов, заданий и развертываний и шаблонов. Используйте templateContext для передачи свойств в шаблоны.
Используйте проверки утверждения, чтобы вручную управлять выполнением этапа. Эти проверки обычно используются для управления развертываниями в рабочих средах.
Проверки — это механизм, доступный владельцу ресурса. Они позволяют указывать, когда этап в конвейере будет использовать ресурс. Как владелец ресурса, например среды, можно определить проверки, необходимые перед этапом, который будет использовать ресурс.
В настоящее время проверки утверждения вручную поддерживаются в средах . Дополнительные сведения см. в разделе утверждения.
Монопольная блокировка
В конвейерах YAML проверки используются для управления выполнением этапов защищенных ресурсов. Одним из распространенных проверок, которые можно использовать, является монопольная проверка блокировки. Эта проверка позволяет продолжить только один запуск из конвейера. При одновременном попытке развертывания нескольких запусков в среде проверка отменяет все старые запуски и разрешает развертывание последнего запуска.
Вы можете настроить поведение монопольной проверки блокировки с помощью свойства lockBehavior
, которое имеет два значения:
-
runLatest
. Только последний запуск получает блокировку ресурса. Это значение по умолчанию, если не указаноlockBehavior
. -
sequential
. Все запуски получают блокировку последовательно к защищенному ресурсу.
Отмена старых запусков является хорошим подходом, когда выпуски являются накопительными и содержат все изменения кода из предыдущих запусков. Однако существуют некоторые конвейеры, в которых изменения кода не являются накопительными. Настроив свойство lockBehavior
, можно разрешить все запуски продолжать и развертывать последовательно в среде или сохранять предыдущее поведение отмены старых запусков и разрешить только последнюю версию. Значение sequential
подразумевает, что все запуски получают блокировку последовательно для защищенного ресурса. Значение runLatest
означает, что только последний запуск получает блокировку для ресурса.
Чтобы использовать монопольную проверку блокировки с развертываниями sequential
или runLatest
, выполните следующие действия.
- Включите монопольную проверку блокировки в среде (или другой защищенный ресурс).
- В файле YAML для конвейера укажите новое свойство с именем
lockBehavior
. Это можно указать для всего конвейера или для определенного этапа:
Установите на этапе:
stages:
- stage: A
lockBehavior: sequential
jobs:
- job: Job
steps:
- script: Hey!
Установите в конвейере:
lockBehavior: runLatest
stages:
- stage: A
jobs:
- job: Job
steps:
- script: Hey!
Монопольная блокировка на уровне стадии
В некоторых случаях использования конвейер должен получить доступ к определенному ресурсу только один раз в любое время. Для поддержки этого случая у нас есть монопольная проверка блокировки, описанная в предыдущем разделе.
Аналогичная ситуация возникает, когда только один запуск конвейера должен получить доступ к этапу в любой момент времени. Например, если у вас есть этап развертывания в группе ресурсов Azure, может потребоваться предотвратить одновременное обновление одной группы ресурсов нескольких конвейеров. В настоящее время для этого требуется использовать прокси-ресурс, например среду, и установить монопольную проверку блокировки в этой среде. Такой подход может занять много времени, добавить сложность и увеличить усилия по обслуживанию.
Если необходимо обеспечить доступ только к одному запуску конвейера на этапе, можно указать монопольную блокировку на уровне этапа. Если у вас есть этап с идентификатором и указать его свойство lockBehavior
, блокировка автоматически создается для этого этапа. Последовательное поведение остается согласованным как для блокировок уровня ресурсов, так и для уровней стадии. Однако поведение runLatest
отличается, так как он отменяет только сборки runLatest
для одной ветви, а не для всех ветвей конвейера.
Примеры
В этом примере последовательно выполняются три этапа. Средний этап выполняет два задания параллельно.
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- script: echo Building!
- stage: Test
jobs:
- job: TestOnWindows
steps:
- script: echo Testing on Windows!
- job: TestOnLinux
steps:
- script: echo Testing on Linux!
- stage: Deploy
jobs:
- job: Deploy
steps:
- script: echo Deploying the code!
В этом примере выполняется два этапа параллельно. Для краткости задания и шаги опущены.
stages:
- stage: BuildWin
displayName: Build for Windows
- stage: BuildMac
displayName: Build for Mac
dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it
См. также
Дополнительные сведения о этапах , условиях и переменных.