Как узнать результат предыдущего шага в Azure DevOps build Pipe line? - PullRequest
1 голос
/ 22 января 2020

Я хотел узнать, есть ли какой-нибудь способ узнать результат выполнения предыдущего шага в конвейере сборки в azure dev ops.

Чтобы подробно объяснить мой запрос: скажем в azure Devops У меня есть конвейер сборки с примерно 10 шагами, который выполняет несколько задач, таких как подготовка к сборке, сборка решения, синхронизация и некоторые другие вещи.

Теперь я хотел бы узнать статус выполнения определенного шага: другими словами:

  1. ШАГ 1: Успешный
  2. ШАГ 2: Успешный
  3. ШАГ 3: Сбой
  4. ШАГ 4 : Я хочу знать статус выполнения ШАГА 3 независимо от того, был ли он неудачным или успешным, основываясь на том, что я хочу выполнить ШАГ 4
  5. ШАГ 5: Должен ли выполняться аналогично ШАГУ 4, т.е. на основе результата выполнения шага ШАГА 3
  6. ШАГ 6: Должен быть выполнен
  7. ШАГ 7: Должен быть выполнен

И так далее до ШАГА 10 ..

Моя проблема как этого добиться? Как выполнить несколько шагов, чтобы не выполнять их на основе результатов выполнения предыдущего шага, а затем выполнить остальные. Должно быть выполнено.

Обратите внимание, я пытался поставить как Выполнить, только если все предыдущие задачи были успешными, но все равно это не работает. Он по-прежнему выполняет шаги 4 и 5.

Также обратите внимание, что с STEP 7 связаны некоторые пользовательские условия, которые работают нормально. Эта заметка была дана только для того, чтобы предоставить больше контекста, как мои задачи конвейера сборки определяются или создаются.

Пожалуйста, помогите мне решить эту проблему или добиться такого поведения.

Ответы [ 2 ]

1 голос
/ 22 января 2020

вы можете иметь пользовательское условие для выполнения шагов 3 и 4 только в случае неудачи предыдущих шагов failed() (хотя бы один из предыдущих шагов), но все остальные шаги после будут либо пропущены (если они ожидают, что все шаги успешно) или все будут выполнены (если вы установите их на succeededOrFailed().

, вы не сможете быть динамически c в этом решении.

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

0 голосов
/ 24 января 2020

Вы можете делать то, что вам нужно, без этапов и заданий, но я думаю, что описываемый вами случай является хорошим кандидатом на несколько заданий в вашем конвейере. Вот пример конвейера yaml, который следует логике c в вашем вопросе. Комбинация dependsOn: и condition: поможет вам построить эти типы графиков зависимостей в вашем конвейере.

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

jobs:
- job: Foo 
  displayName: (Steps 1-2)
  steps:
  - script: echo Hello, world!
    displayName: Number 1

  - script: echo Hello, world!
    displayName: Number 2

- job: Bar 
  displayName: (Step 3)
  dependsOn: Foo
  steps:
  - script: 0\0
    displayName: Number 3

- job: Qux 
  displayName: (Step 4-5)
  dependsOn: Bar
  condition: failed()
  steps:
  - script: echo Hello, world!
    displayName: Number 4

  - script: echo Hello, world!
    displayName: Number 5

- job: baz
  displayName: (Step 6+)
  dependsOn: Qux
  condition: always()
  steps:
  - script: echo Hello, world!
    displayName: Number 6

  - script: echo Hello, world!
    displayName: Number 7

неудовлетворительный поток успешный поток

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