无法确定触发构建的管道

Can't determine pipeline which triggered a build

我正在使用 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 的 repo 将 'master' 作为其默认分支。

我也找不到任何设置为触发构建的分支名称的环境变量。那么如何获取触发构建的分支名称呢?如果没有办法,我觉得这个还要加!

问题是:

根据文档,Build.SourceBranch是根据触发库设置的。但实际上它的值是由YAML文件所在的repo决定的。

我做了以下测试。有两个回购协议,'RepoA' 和 'RepoB'。两个回购协议都有两个分支,'master' 和 'bran'。 YAML 文件位于 'RepoA'

的 'master' 中
  1. 提交对 'RepoB' 的 'bran' 的更改。 Build.SourceBranch 的值为 refs/heads/master。与文档不一致。

  2. 提交对 'RepoA' 的 'bran' 的更改。 Build.SourceBranch 的值为 refs/heads/bran。与文档一致。

  3. 提交对 'RepoB' 的 'master' 的更改。 Build.SourceBranch 的值为 refs/heads/master。与文档一致。

  4. 提交对 'RepoA' 的 'master' 的更改。 Build.SourceBranch 的值为 refs/heads/master。与文档一致。

因此,如果构建是由'RepoA'触发的,Build.SourceBranch可以成功代表真正的分支。但是,如果构建是由 'RepoB' 触发的,Build.SourceBranch 的值始终是 refs/heads/master.

我们已将此问题报告给产品组。