如何解决无法确定触发构建的管道
我正在使用Azure DevOps的多个存储库功能,在此处记录:
https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops
我在一个存储库中保存了我的YAML文件,并且管道指向该YAML。 YAML为另一个存储库资源设置了触发器,以便在更新该存储库时将触发管道:
resources:
repositories:
- repository: MyRepo
endpoint: 'MyRepos'
type: git
name: RepoName
trigger:
- '*'
文档声称'Build.SourceBranch'变量将使我能够确定MyRepo中的哪个分支触发了管道构建:“当对一个存储库的更新触发管道时,将基于触发来设置以下变量存储库”
但是,事实并非如此。无论哪个分支触发构建,“ Build.SourceBranch”始终为“ refs / heads / master”,大概是因为保存YAML的存储库将“ master”作为其默认分支。
我也找不到任何设置为触发构建的分支名称的环境变量。那么,如何获取触发构建的分支名称?如果没有办法,我认为需要添加!
解决方法
问题是:
根据文档,根据触发存储库设置 Build.SourceBranch
。但是,其值由YAML文件所在的存储库决定。
我已经完成了以下测试。有两个存储库,“ RepoA”和“ RepoB”。这两个存储库都有两个分支,“主”和“分支”。而且YAML文件位于“ RepoA”的“主文件”中
-
在“ RepoB”的“ bran”中进行更改。
Build.SourceBranch
的值为refs/heads/master
。它与文档不一致。 -
提交“ RepoA”的“ bran”更改。
Build.SourceBranch
的值为refs/heads/bran
。它与文档一致。 -
在“ RepoB”的“主”中进行更改。
Build.SourceBranch
的值为refs/heads/master
。它与文档一致。 -
在“ RepoA”的“主”中进行更改。
Build.SourceBranch
的值为refs/heads/master
。它与文档一致。
因此,如果构建是由“ RepoA”触发的,则Build.SourceBranch
可以成功表示真实分支。但是,如果构建是由“ RepoB”触发的,则Build.SourceBranch
的值始终为refs/heads/master
。
我们已将此问题报告给产品组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。