在将一堆 YAML 管道转换为使用模板来保存作业逻辑以及定义我的管道变量后,我遇到了一个奇怪的问题。管道运行得非常好,但是我收到“检测到与管道触发器相关的一些最近的问题”。管道摘要页面顶部的警告和查看详细信息仅指出:“配置触发器失败,再次编辑并保存管道。”
这里奇怪的是管道工作得很好,包括触发器。没有任何问题,也没有提供有关假定问题的更多详细信息。我目前为管道覆盖了 YAML 触发器,但我也确实在 YAML 中定义了相同的触发器以查看是否有帮助(它没有)。
我正在寻找有关可能导致此问题的任何想法,或者鉴于错误/警告提供的完全缺乏详细信息,我如何能够进一步对其进行故障排除。这在开发人员中引起了很多困惑,他们认为由于警告而导致他们的构建可能存在问题。
这是主要管道。构建存储库是一个共享存储库,用于保存跨构建系统中的多个存储库使用的代码。dev.yaml 包含开发环境特定的变量值。Shared 持有基于管道运行的分支有条件地设置变量。
name: ProductName_$(BranchNameLower)_dev_$(MajorVersion)_$(MinorVersion)_$(BuildVersion)_$(Build.BuildId)
resources:
repositories:
- repository: self
- repository: build
type: git
name: Build
ref: master
# This trigger isn't used yet, but we want it defined for later.
trigger:
batch: true
branches:
include:
- 'dev'
variables:
- template: YAML/variables/shared.yaml@build
- template: YAML/variables/dev.yaml@build
jobs:
- template: ProductNameDevJob.yaml
parameters:
pipelinePool: ${{ variables.PipelinePool }}
validRef: ${{ variables.ValidRef }}
然后这是实际工作 yaml 的开始。它提供了可在多个总体管道中使用的作业的可重用定义:
parameters:
- name: dependsOn
type: object
default: {}
- name: pipelinePool
default: ''
- name: validRef
default: ''
- name: noCI
type: boolean
default: false
- name: updateBeforeRun
type: boolean
default: false
jobs:
- job: Build_ProductName
displayName: 'Build ProductName'
pool:
name: ${{ parameters.pipelinePool }}
demands:
- msbuild
- visualstudio
dependsOn:
- ${{ each dependsOnThis in parameters.dependsOn }}:
- ${{ dependsOnThis }}
condition: and(succeeded(), eq(variables['Build.SourceBranch'], variables['ValidRef']))
steps:
**step logic here
最后,我们有变量 YAML,它根据我们正在构建的内容有条件地设置管道变量:
variables:
- ${{ if or(eq(variables['Build.SourceBranch'], 'refs/heads/dev'), eq(variables['Build.SourceBranch'], 'refs/heads/users/ahenderson/azure_devops_build')) }}:
- name: BranchName
value: Dev
** Continue with rest of pipeline variables and settings of each value for each different context.