Azure Конвейеры: как сделать задачу зависимой от предыдущей? - PullRequest
1 голос
/ 17 июня 2020

Я использую Azure -Pipelines для интеграции CI на windows -2019. Вот сценарий, средний порядок выполнения задачи № (1 - первый).

В задаче 2 я запускаю тесты. В задаче 3 я хочу создать отчет по этим тестам, независимо от того, прошли ли тесты успешно или нет (таким образом, добавив - condition: succeededOrFailed() к задаче 3).

Однако в задаче 1 я строю репо. Если сборка не удалась, я не хочу запускать какие-либо последующие задачи. Но так как задача 3 имеет condition: succeededOrFailed(), она все равно выполняется и выдает еще одну ошибку. Моя цель состоит в том, чтобы задача 3 выполнялась независимо от того, завершилась ли задача 2 или завершилась успешно, но не в случае сбоя задачи 1.

Я не уверен, как лучше с этим справиться. Можно ли сделать задачу 3 зависимой от задачи 2? Или я могу немедленно остановить весь конвейер, если задача 1 не удалась?

Кроме того, для задачи 1 я попробовал continueOnError: false, потому что я думал, что он остановит конвейер там, но он не сделал то, что я думал. Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 18 июня 2020

Моя цель состоит в том, чтобы задача 3 выполнялась независимо от того, завершилась ли задача 2 или завершилась успешно, но не в случае сбоя задачи 1.

По вашему требованию вы можете соединить задачу 3 и задачу 1 .

Вот шаблон Yaml:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: task1
...


- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      # Write your PowerShell commands here.

      Write-Host "##vso[task.setvariable variable=task.A.status]Success"      
  condition: succeeded()

- task: task2
 ...
  condition: succeeded()

- task: task 3
....
  condition: and (succeededOrFailed(), eq(variables['task.A.status'], 'success'))

Объяснение :

Powershell task используется для установки output variable для задачи 1. При успешном выполнении задачи 1 переменной будет присвоено значение success. Эту переменную можно использовать в следующих задачах.

Условие в задаче 2 зависит от задачи 1.

Условие в задаче 3 должно удовлетворять двум условиям одновременно . (1. независимо от успеха или неудачи, 2. Значение настраиваемой переменной - успех).

Тогда задача 3 будет выполняться, только если задача 1 будет успешной. И задача 3 будет выполняться независимо от того, завершится ли сбой задача 2 или завершится успешно.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...