我有一个作业 A、B、C、D 的列表……无论上一个作业是否成功,它们都会运行。
最后一个是工件发布,它将被发布管道使用。我希望不运行它如果之前的工作都没有成功。
我需要部署任何不会失败的服务(所以我需要传递失败的服务创建),但如果所有失败都阻止链接的发布管道的自动启动。
这里是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()
答案 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.
除非有原因您想要发布成功的工件子集(这可能导致不一致的构建状态,因为相同的构建可能会产生不同的工件),否则建议从所有任务中删除条件。默认行为是仅当前一个任务成功时才运行每个任务。