Azure DevOps:YAML 继续触发器启动某些管道而不是其他管道 - 如何调查此问题?

问题描述

我有四个 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 设置往往会相互抵消:

Trigger settings

最后,如果要指定分支,可以使用以下选项的某种组合:

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 语句放回到所有部署管道中,现在所有都在构建管道完成时被触发。