无法确定触发构建的管道

时间:2020-08-23 21:03:19

标签: azure azure-devops azure-pipelines azure-triggers azure-devops-yaml

我正在使用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”作为其默认分支。

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

1 个答案:

答案 0 :(得分:1)

问题是:

根据文档,根据触发存储库设置 Build.SourceBranch。但是,其值由YAML文件所在的存储库决定。

我已经完成了以下测试。有两个存储库,“ RepoA”和“ RepoB”。这两个存储库都有两个分支,“主”和“分支”。而且YAML文件位于“ RepoA”的“主文件”中

  1. 在“ RepoB”的“ bran”中进行更改。 Build.SourceBranch的值为refs/heads/master。它与文档不一致。

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

  3. 在“ RepoB”的“主”中进行更改。 Build.SourceBranch的值为refs/heads/master。它与文档一致。

  4. 在“ RepoA”的“主”中进行更改。 Build.SourceBranch的值为refs/heads/master。它与文档一致。

因此,如果构建是由“ RepoA”触发的,则Build.SourceBranch可以成功表示真实分支。但是,如果构建是由“ RepoB”触发的,则Build.SourceBranch的值始终为refs/heads/master

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

相关问题