Продолжить конвейер Azure при неудачной задаче - PullRequest
0 голосов
/ 07 июля 2019

У меня есть задача, которая запускает Cypress:

-ErrorAction SilentlyContinue
cd $(System.DefaultWorkingDirectory)/_ClientWeb-Build-CI/ShellArtifact/
npx cypress run

И я установил ErrorActionPreference на continue.Но когда мой Cypress терпит неудачу:

##[error]PowerShell exited with code '1'.

Следующая задача отменяется, и выпуск не удался.Как продолжить выпуск даже после сбоя Cypress, и возможно ли дать логическому значению true / false значение, основанное на результате задачи Cypress?

Ответы [ 4 ]

1 голос
/ 09 июля 2019

Параметр ErrorActionPreference используется для определения, продолжать ли выполнять код отдыха вместо задачи.Таким образом, при продолжении значении для ErrorActionPreference задача выполнит код следующей строки вашего сценария даже через ошибку выброса кода текущей строки, если только вы не вызовете exit .

Для вашего требования вы используете конвейер выпуска (это конструктор пользовательского интерфейса), и вы хотите продолжить запускать весь выпуск, поэтому вам просто нужно выбрать опцию Продолжить при ошибке:

enter image description here

1 голос
/ 08 июля 2019

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

jobs:
- job: Foo

  steps:
  - powershell: |
      your code here
  - script: echo Hello!
    condition: always() # this step will always run, even if the pipeline is cancelled

- job: Bar
  dependsOn: Foo
  condition: failed() # this job will only run if Foo fails

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

0 голосов
/ 08 июля 2019

Аргумент «ErrorActionPreference» используется для указания того, будет ли код в этом скрипте выполняться с ошибками или нет, он не может управлять следующей задачей.

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

condition: always() # this step will always run, even if the pipeline is cancelled

Или вы можете добавить параметр аргумента в задачу ошибки.

continueOnError: true # 'true' if future steps should run even if this step fails; defaults to 'false'

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

0 голосов
/ 08 июля 2019

Если вы хотите продолжить выпуск, даже если задача Cypress не выполнена, просто добавьте в задачу Cypress следующую строку:

continueOnError: true 
...