azure-pipelines.在作业中使用Yml,只有在上一步失败时才运行下一步



目前在我的azure管道中有以下代码:只有当sonarqube_publish失败时,我们才需要运行sonarqube_publish_retry。尝试使用condition: failed()在sonarqube_publish_retry步骤中添加条件,但它没有按预期工作。任何想法吗?

stages:
- stage: SonarQube_Scan
jobs:
- job: SonarQube
- task: SonarQubePublish@5
continueOnError: true
displayName: 'Publish SonarQube results'
name: 'sonarqube_publish'
inputs:
pollingTimeoutSec: '300'
- task: SonarQubePublish@5
displayName: 'Retry Publish SonarQube results'
name: 'sonarqube_publish_retry'
inputs:
pollingTimeoutSec: '300'

当使用continueOnError时,步骤抛出错误,作业状态设置为SucceededWithIssues。正如您在文档中看到的,SucceededWithIssues状态将是而不是failed()拾取,但由succeeded()函数,这就是为什么你的代码不工作。相反,在条件中,检查Agent.JobStatus变量是否等于SucceededWithIssues:

stages:
- stage: SonarQube_Scan
jobs:
- job: SonarQube
- task: SonarQubePublish@5
continueOnError: true
displayName: 'Publish SonarQube results'
name: 'sonarqube_publish'
inputs:
pollingTimeoutSec: '300'
- task: SonarQubePublish@5
displayName: 'Retry Publish SonarQube results'
name: 'sonarqube_publish_retry'
condition: eq(variables['Agent.JobStatus'], 'SucceededWithIssues')
inputs:
pollingTimeoutSec: '300'

感谢@DavidCox88,我已经添加了retryCountOnTaskFailure字段,它工作得很好。

最新更新