问题描述
我有四个 YAML“发布”管道,我在其中使用相同的 YAML 语法来定义延续触发器。这是触发器的 YAML 定义。
resources:
pipelines:
- pipeline: Build # Name of the pipeline resource
source: BuildPipeline # Name of the pipeline as registered with Azure DevOps
trigger: true
我不太确定这种语法,我没有指定任何分支,但直到最近一切正常。最近我更新了两个 YAML 发布管道,现在当构建管道完成时它们不会被触发。如果手动执行,所有管道都可以正常工作。
所有发布管道的延续触发器定义都具有相同的 YAML(见上文),并且为“手动和计划构建的默认分支”设置了相同的分支。
我不知道如何调查为什么一些发布管道没有被触发(任何地方有可用的日志?)我没有看到它们被执行和失败,它们只是没有被触发。如何调查此问题?
解决方法
关于调查日志的问题 - 您可以看到创建了哪些管道运行,但不幸的是,您看不到什么不是。就 Azure DevOps 而言,如果“没有发生任何事情”来触发触发器,那么就没有什么可记录的。
至于管道本身没有触发,在管道编辑器中,检查触发器设置以确保那里没有设置任何东西 - UI 和 YAML 设置往往会相互抵消:
最后,如果要指定分支,可以使用以下选项的某种组合:
resources:
pipelines:
- pipeline: Build # Name of the pipeline resource
source: BuildPipeline # Name of the pipeline as registered with Azure DevOps
trigger:
branches:
include: # branch names which will trigger a build
exclude: # branch names which will not
tags:
include: # tag names which will trigger a build
exclude: # tag names which will not
paths:
include: # file paths which must match to trigger a build
exclude: # file paths which will not trigger a build
,
我相信我发现了问题,这是从我的部署管道中删除以下语句
pool:
vmImage: windows-2019
我删除了这些语句,因为我将所有作业转换为部署作业,如下所示
- deployment: MyDeployJob
displayName: 'bla bla bla'
environment:
name: ${{ parameters.AzureDevopsEnv }}
resourceType: VirtualMachine
resourceName: ${{ parameters.AzureDevopsVM }}
如果手动启动,没有 pool
语句的管道运行得很好,但我确信如果通过管道完成触发器启动,则无法触发。我不明白这种行为,但我将 pool 语句放回到所有部署管道中,现在所有都在构建管道完成时被触发。