DevOps YAML 构建管道多回购触发分支未被 Release Pipeline 识别以用于持续部署触发器或工件过滤器
DevOps YAML build pipeline multi-repo trigger branch not identified by Release Pipeline for continuous deployment trigger or artifact filter
我有一个 YAML 构建管道,它位于存储库 PipelineRepo
、分支 master
。
它包含对第二个存储库 AppRepo
的引用,在分支 dev
上有一个触发器。
在 AppRepo/dev
上进行提交时,构建会触发并生成工件。 Build.SourceBranch
在构建期间可用的预定义变量当然是 dev
,因为这是 AppRepo
上的触发分支。这是根据此处的文档:
文档的具体部分是这样的:
When an update to one of the repositories triggers a pipeline, then
the following variables are set based on triggering repository:
- Build.Repository.ID
- Build.Repository.Name
- Build.Repository.Provider
- Build.Repository.Uri
- Build.SourceBranch
- Build.SourceBranchName
- Build.SourceVersion
- Build.SourceVersionMessage
我在发布管道中使用工件,其中我有一个“开发”阶段,其中有一个用于分支 dev
:
的工件过滤器
我在分支 dev
:
的工件上有一个持续部署触发器
现在我们来解决问题
每次从 AppRepo/dev
分支生成新的构建工件时,持续部署触发器不会触发,因为它认为工件的构建分支是 PipelineRepo/master
。舞台上的神器过滤器也是如此——我通过将持续部署触发器更改为 master
.
进行了测试
注意:您可以在屏幕截图中看到构建名称包含单词“dev”。这是因为我在自定义构建名称中使用了 Build.SourceBranch
变量。这证明神器肯定是由AppRepo/dev
触发分支产生的。
如何让 DevOps 发布管道选择触发分支?
根据您的描述,我可以在我的组织中重现类似的问题。
当管道被另一个 repo 分支触发时,它仍然在 Release artifacts 中显示 master 分支。
同时trigger分支在Pipelines中的显示也不一致
例如:
概览:
详细视图:
我建议您可以在 Our feedback Site 中创建反馈票。
解决方法:
您可以在 Pipeline 中添加构建标签来区分工件。
Yaml 示例:
resources:
repositories:
- repository: test
type: git
name: 123/ARM
trigger:
- test
steps:
- checkout: test
- script: echo "##vso[build.addbuildtag]$(Build.SourceBranch)"
发布管道:
您可以设置主分支并添加构建标签。
我有一个 YAML 构建管道,它位于存储库 PipelineRepo
、分支 master
。
它包含对第二个存储库 AppRepo
的引用,在分支 dev
上有一个触发器。
在 AppRepo/dev
上进行提交时,构建会触发并生成工件。 Build.SourceBranch
在构建期间可用的预定义变量当然是 dev
,因为这是 AppRepo
上的触发分支。这是根据此处的文档:
文档的具体部分是这样的:
When an update to one of the repositories triggers a pipeline, then the following variables are set based on triggering repository:
- Build.Repository.ID
- Build.Repository.Name
- Build.Repository.Provider
- Build.Repository.Uri
- Build.SourceBranch
- Build.SourceBranchName
- Build.SourceVersion
- Build.SourceVersionMessage
我在发布管道中使用工件,其中我有一个“开发”阶段,其中有一个用于分支 dev
:
我在分支 dev
:
现在我们来解决问题
每次从 AppRepo/dev
分支生成新的构建工件时,持续部署触发器不会触发,因为它认为工件的构建分支是 PipelineRepo/master
。舞台上的神器过滤器也是如此——我通过将持续部署触发器更改为 master
.
注意:您可以在屏幕截图中看到构建名称包含单词“dev”。这是因为我在自定义构建名称中使用了 Build.SourceBranch
变量。这证明神器肯定是由AppRepo/dev
触发分支产生的。
如何让 DevOps 发布管道选择触发分支?
根据您的描述,我可以在我的组织中重现类似的问题。
当管道被另一个 repo 分支触发时,它仍然在 Release artifacts 中显示 master 分支。
同时trigger分支在Pipelines中的显示也不一致
例如:
概览:
详细视图:
我建议您可以在 Our feedback Site 中创建反馈票。
解决方法:
您可以在 Pipeline 中添加构建标签来区分工件。
Yaml 示例:
resources:
repositories:
- repository: test
type: git
name: 123/ARM
trigger:
- test
steps:
- checkout: test
- script: echo "##vso[build.addbuildtag]$(Build.SourceBranch)"
发布管道:
您可以设置主分支并添加构建标签。