yaml - 管道 - 如果至少一个先前的作业成功,则运行一个作业
问题描述
我有一个作业 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()
解决方案
PublishPipelineArtifact@0
删除当前读取的条件,无论前面的任务是否成功或已发布,此任务都将运行。
Even if a previous dependency has failed, unless the run was canceled. Use succeededOrFailed() in the YAML for this condition.
除非出于某种原因您想要发布成功的工件子集(这可能导致构建状态不一致,因为相同的构建可能会产生不同的工件)建议从所有任务中删除条件。默认行为是仅在前面的任务成功时才运行每个任务。
推荐阅读
- python - 在使用 opencv 进行视觉特征提取之前,是否应该将图像大小调整为相同?
- c# - 是否可以将应用程序从 Visual Studio 部署到 Azure VM(Windows 10)?
- php - 如何在 Woocommerce 中更新优惠券代码对象
- java - 生成签名的 apk/bundle 时任务 ':app:transformClassesAndResourcesWithR8ForRelease' 执行失败
- python - 如何使用 UNION 语句在 python 中合并两个 SQLite 表(当前出现“ValueError: parameters are of unsupported type”错误消息)
- python - 信号处理程序必须是 signal.SIG_IGN、signal.SIG_DFL 或可调用对象
- c - 同时使用 malloc 和 FILE 指针时出错
- python-3.x - 是否可以在不使用硬件适配器的情况下直接使用 UART 与自动售货机(使用 MDB)进行通信?
- python - 如何让 lxml 将两个页面保存到页面中,以便树可以读取它?
- python-3.x - 如何抓取无法检查的数据和内部的数据