管道 - 如果至少有一项先前的工作成功,则运行一项工作

时间:2021-06-10 13:41:16

标签: yaml azure-pipelines jobs

我有一个作业 A、B、C、D 的列表……无论上一个作业是否成功,它们都会运行。

最后一个是工件发布,它将被发布管道使用。我希望不运行如果之前的工作都没有成功

我需要部署任何不会失败的服务(所以我需要传递失败的服务创建),但如果所有失败都阻止链接的发布管道的自动启动。

Pipeline

这里是Azure给出的YAML代码

pool:
  name: Default
  demands:
  - msbuild
  - visualstudio

steps:
- task: VSBuild@1
  displayName: 'Generate Solution'
  inputs:
    solution: LisaMES.sln
    platform: '$(PlatformName)'
    configuration: '$(ConfigurationName)'


- task: ArchiveFiles@2
  displayName: 'Create Service A'
  inputs:
    rootFolderOrFile: '$(ServiceName)\bin\$(ConfigurationName)'
    includeRootFolder: false
    archiveFile: 'Bin_Services/$(ServiceName)_$(ConfigurationName).zip'
  condition: succeededOrFailed()



- task: ArchiveFiles@2
  displayName: 'Create Service B'
  inputs:
    rootFolderOrFile: '$(ServiceName)\bin\$(ConfigurationName)'
    includeRootFolder: false
    archiveFile: 'Bin_Services/$(ServiceName)_$(ConfigurationName).zip'
  condition: succeededOrFailed()



 ... C D E F like this


- task: PublishPipelineArtifact@0
  displayName: 'Publish Pipeline Artifact'
  inputs:
    artifactName: Services
    targetPath: 'Bin_Services'
  condition: succeededOrFailed()

1 个答案:

答案 0 :(得分:-1)

如果前面的任务成功或发布,则删除 PublishPipelineArtifact@0 上的条件,因为它当前读取此 task will run irregardless

Even if a previous dependency has failed, unless the run was canceled. Use succeededOrFailed() in the YAML for this condition.

除非有原因您想要发布成功的工件子集(这可能导致不一致的构建状态,因为相同的构建可能会产生不同的工件),否则建议从所有任务中删除条件。默认行为是仅当前一个任务成功时才运行每个任务。