azure - 无法确定触发构建的管道
问题描述
我正在使用 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”。两个 repos 都有两个分支,“master”和“bran”。YAML 文件位于“RepoA”的“master”中
对“RepoB”的“麸皮”进行更改。的
Build.SourceBranch
值为refs/heads/master
。它与文档不一致。对“RepoA”的“麸皮”进行更改。的
Build.SourceBranch
值为refs/heads/bran
。它与文档一致。在“RepoB”的“master”中提交更改。的
Build.SourceBranch
值为refs/heads/master
。它与文档一致。在“RepoA”的“master”中提交更改。的
Build.SourceBranch
值为refs/heads/master
。它与文档一致。
因此,如果构建是由“RepoA”触发的,Build.SourceBranch
则可以成功代表真正的分支。但是,如果构建是由 'RepoB' 触发的,则值Build.SourceBranch
总是refs/heads/master
。
我们已将此问题报告给产品组。
推荐阅读
- javascript - 如何使用本地存储和 JavaScript 创建俄罗斯方块分数计数器
- python - 在 Python 中对嵌套字典进行排序
- java - 本地测试 Spark Sql 查询
- c# - 通用转换错误 - 无法将“System.Double”类型的对象转换为“System.Int32”类型?
- pandas - 单个单元格字符串列出到多行
- netcdf - netcdf - CDO monmean
- php - Ajax 响应在 laravel 7 中无法正常工作
- python - 我在 Pygame 中创建了一个 Toggle Box 类,但它没有修改我作为参数传递给它的原始布尔值
- gams-math - 如何在 GAMS 的 lst 文件中设置输出的宽度
- python - 将变量分配给python类的最快方法