【发布时间】:2022-10-25 13:59:51
【问题描述】:
是否可以从管道完成触发器如果出现故障触发管道?根据文档,默认情况下似乎没有可用的配置/属性。只是想检查管道完成触发器是否有任何可能的方法。
【问题讨论】:
标签: azure azure-devops azure-pipelines
是否可以从管道完成触发器如果出现故障触发管道?根据文档,默认情况下似乎没有可用的配置/属性。只是想检查管道完成触发器是否有任何可能的方法。
【问题讨论】:
标签: azure azure-devops azure-pipelines
如果初始管道未能触发,则所有后续管道在逻辑上都将无法触发。尝试让您的初始管道从一个永远不会失败的阶段开始,如果该管道失败,您可以将其设置为在第一个管道失败但成功触发后触发后续管道。
【讨论】:
如果触发管道出现故障,是否可以从管道完成触发器触发另一个管道?
如果触发管道发生故障,则没有此类配置/属性可用于从管道完成触发器触发另一个管道。
为了解决这个问题,您可以尝试添加powershell任务以使用REST API Builds - Queue:
POST https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=6.1-preview.7您可以查看this thread 以获取详细脚本。
并使用条件
Only when a previous task has failed设置此 powershell 任务:在这种情况下,无论之前的任务是否失败,都会在管道结束时调用 REST API 来触发构建。
【讨论】:
我能够通过管道完成触发器本身来管理我的需求。如果我们在触发管道中定义阶段是可能的。如果其他人正在寻找相同的方法,我将发布答案。
需要用阶段定义触发管道定义。此外,我们需要确保每次至少有一个阶段成功。我已经定义了几个阶段,因此这完全符合我的要求。
触发管道 YAML 定义:(管道名称:pipeline1)
trigger: none
pr: none
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: stage_1
displayName: Stage-1
jobs:
- job: greeting
displayName: Greeting
steps:
- script: |
echo "Hello world!"
exit 1
- stage: stage_2
displayName: Stage-2
condition: always()
jobs:
- job: thanking
displayName: Thanking
steps:
- script: |
echo "Thank you!"
定义管道完成触发器阶段过滤器对于触发的管道。
触发管道 YAML 定义:
trigger: none
pr: none
resources:
pipelines:
- pipeline: Pipeline_1
source: pipeline1
trigger:
stages:
- stage_1
pool:
vmImage: 'ubuntu-latest'
jobs:
- job: greeting
steps:
- script: |
echo "Hello world!"
然后触发管道将被触发而不管阶段1在触发管道中,因为stage_2每次运行都会保持成功。
【讨论】: