在将一堆YAML管道转换为使用模板来保存作业逻辑以及定义管道变量后,我遇到了一个奇怪的问题。这些管道可以完美地运行,但是在管道摘要页面的顶部会出现“检测到与管道触发器相关的一些最近问题”的警告,并且查看详细信息只会显示:“配置触发器失败,请编辑并重新保存管道。”
奇怪的是,管道完全正常工作,包括触发器。没有任何故障,也没有关于所谓问题的进一步细节。目前,我已经为管道覆盖了YAML触发器,但我还定义了相同的触发器,以查看是否有帮助(实际上并没有)。
我正在寻找任何可能导致此问题的想法,或者如何进一步排除故障,因为错误/警告提供的详细信息非常缺乏,这使得开发人员认为他们的构建可能存在问题。
以下是主要管道。构建存储库是用于保存在构建系统中多个存储库中使用的代码的共享存储库。dev.yaml包含特定于开发环境的变量值。Shared存储条件设置的变量,这些变量基于管道正在运行的分支。
最后,我们有一个名为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.