我正在使用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”作为其默认分支。
我也找不到任何设置为触发构建的分支名称的环境变量。那么,如何获取触发构建的分支名称?如果没有办法,我认为需要添加!
答案 0 :(得分:1)
问题是:
根据文档,根据触发存储库设置 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
。
我们已将此问题报告给产品组。