Добавление этапов, зависимостей, & условий

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | Team Foundation Server 2018 — Team Foundation Server 2015

Примечание

В Microsoft Team Foundation Server (TFS) 2018 и предыдущих версий конвейеры сборки и выпуска называются определениями, выполнения называются сборками, подключения к службам называются конечными точками служб, этапы называются средами, а задания называются этапами.

Понятие этапов зависит от того, используются ли конвейеры YAML или классические конвейеры выпуска.

Задания конвейера можно упорядочить по этапам. Этапы — это основные подразделения в конвейере: "собрать это приложение", "выполнить эти тесты" и "развернуть в подготовительную среду" — хорошие примеры этапов. Они являются логическими границами в конвейере, где можно приостановить конвейер и выполнить различные проверки.

Каждый конвейер имеет по крайней мере один этап, даже если он не определен явным образом. Вы также можете расположить этапы в графе зависимостей, чтобы один этап выполнялся перед другим. Для этапа существует ограничение в 256 заданий.

Примечание

в Azure DevOps Server 2019,1 добавлена поддержка этапов.

Эта версия TFS не поддерживает YAML.

Укажите этапы

Примечание

в Azure DevOps Server 2019,1 добавлена поддержка этапов.

В самом простом случае логические границы в конвейере не требуются. В этом случае нет необходимости явно использовать stage ключевое слово. Задания можно указать непосредственно в файле YAML.

# this has one implicit stage and one implicit job
pool:
  vmImage: 'ubuntu-latest'
steps:
- bash: echo "Hello world"
# this pipeline has one implicit stage
jobs:
- job: A
  steps:
  - bash: echo "A"

- job: B
  steps:
  - bash: echo "B"

Если конвейер организован в несколько этапов, используется stages ключевое слово.

stages:
- stage: A
  jobs:
  - job: A1
  - job: A2

- stage: B
  jobs:
  - job: B1
  - job: B2

Если вы решили указать на pool уровне этапа, все задания, определенные на этом этапе, будут использовать этот пул, если не указано иное на уровне задания.

Примечание

в Azure DevOps Server 2019 пулы могут указываться только на уровне задания.

stages:
- stage: A
  pool: StageAPool
  jobs:
  - job: A1 # will run on "StageAPool" pool based on the pool defined on the stage
  - job: A2 # will run on "JobPool" pool
    pool: JobPool

Полный синтаксис для указания этапа:

stages:
- stage: string  # name of the stage, A-Z, a-z, 0-9, and underscore
  displayName: string  # friendly name to display in the UI
  dependsOn: string | [ string ]
  condition: string
  pool: string | pool
  variables: { string: string } | [ variable | variableReference ] 
  jobs: [ job | templateReference]

Эта версия TFS не поддерживает конвейеры YAML.

Указание зависимостей

Примечание

в Azure DevOps Server 2019,1 добавлена поддержка этапов.

При определении нескольких стадий в конвейере по умолчанию они выполняются последовательно в том порядке, в котором они определены в файле YAML. Исключением является добавление зависимостей. При использовании зависимостей этапы выполняются в порядке dependsOn требований.

Pipelines должен содержать по крайней мере один этап без зависимостей.

Для определения нескольких этапов и их зависимостей используется следующий синтаксис:

stages:
- stage: string
  dependsOn: string
  condition: string

Примеры этапов, которые выполняются последовательно:

# if you do not use a dependsOn keyword, stages run in the order they are defined
stages:
- stage: QA
  jobs:
  - job:
    ...

- stage: Prod
  jobs:
  - job:
    ...

Примеры этапов, выполняемых параллельно:

stages:
- stage: FunctionalTest
  jobs:
  - job:
    ...

- stage: AcceptanceTest
  dependsOn: []    # this removes the implicit dependency on previous stage and causes this to run in parallel
  jobs:
  - job:
    ...

Пример развертывания и вращения вентилятора:

stages:
- stage: Test

- stage: DeployUS1
  dependsOn: Test    # this stage runs after Test

- stage: DeployUS2
  dependsOn: Test    # this stage runs in parallel with DeployUS1, after Test

- stage: DeployEurope
  dependsOn:         # this stage runs after DeployUS1 and DeployUS2
  - DeployUS1
  - DeployUS2

Эта версия TFS не поддерживает конвейеры YAML.

Условия

Можно указать условия, при которых выполняется каждая стадия. По умолчанию этап выполняется, если он не зависит от какого-либо другого этапа или если все этапы, от которых он зависит, завершились успешно. Это поведение можно настроить, принудительно запустив этап, даже если на предыдущем этапе произойдет сбой или если указать пользовательское условие.

Если вы настраиваете условие по умолчанию для предыдущих шагов для этапа, то удаляются условия завершения и успешного выполнения. Поэтому при использовании пользовательского условия обычно используется and(succeeded(),custom_condition) для проверки успешного выполнения предыдущего этапа. В противном случае этап выполняется независимо от результата предыдущего этапа.

Примечание

Условия для Failed (' JOBNAME/СТАЖЕНАМЕ ') и успех (' JOBNAME/СТАЖЕНАМЕ '), как показано в следующем примере, работают только для конвейеров YAML.

Примечание

в Azure DevOps Server 2019,1 добавлена поддержка этапов.

Пример выполнения этапа на основе состояния выполнения предыдущего этапа:

stages:
- stage: A

# stage B runs if A fails
- stage: B
  condition: failed()

# stage C runs if B succeeds
- stage: C
  dependsOn:
  - A
  - B
  condition: succeeded('B')

Пример использования настраиваемого условия:

stages:
- stage: A

- stage: B
  condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))

Эта версия TFS не поддерживает конвейеры YAML.

Указание политик очередей

Конвейеры YAML не поддерживают политики очереди. Каждый запуск конвейера не зависит от других запусков и не знает о них. Иными словами, две последовательные фиксации могут активировать два конвейера, и оба они будут выполнять одну и ту же последовательность этапов, не дожидаясь друг друга. Несмотря на то, что мы работаем над переносом политик очереди в конвейеры YAML, рекомендуется использовать утверждения вручную , чтобы вручную упорядочивать и контролировать порядок выполнения, если это важно.

Эта версия TFS не поддерживает конвейеры YAML.

Указание утверждений

Можно вручную контролировать, когда этап должен выполняться с помощью проверок утверждения. Обычно это используется для управления развертываниями в рабочих средах. Проверки — это механизм, доступный владельцу ресурса для управления тем, когда стадия конвейера может использовать ресурс. Как владелец ресурса, например среды, можно определить проверки, которые должны быть удовлетворены, прежде чем можно будет запустить этот ресурс.

В настоящее время проверки утверждения вручную поддерживаются в средах. Дополнительные сведения см. в разделе утверждения.

Утверждения пока не поддерживаются в конвейерах YAML в этой версии Azure DevOps Server.

Эта версия TFS не поддерживает конвейеры YAML.