我有两个AzureDevOps Git分支:
master
feature/mybranch
字符串
我在yaml中定义了一个多阶段构建管道,其中一些步骤被模板化到单独的.yml文件中。
在我的外层azure-pipelines.yml中,我引用了一个存储库,其中我的template .yml存在:
resources:
repositories:
- repository: templates
type: git
name: MyProject/MyRepo
型
当我在'master'分支中构建时,一切都很好,因为默认情况下,仓库将在refs/heads/master中查找。
当我在功能分支工作时,我想测试我的template .yml文件的实验性更改,我不希望它从master分支获取它们,我希望它使用我正在工作的分支中的文件。
下面的代码可以让我做到这一点:
resources:
repositories:
- repository: templates
type: git
name: MyProject/MyRepo
ref: refs/heads/feature/mybranch
型
然而,当我将其合并回master时,我显然不希望'ref:'仍然指向特性分支,所以我希望使用变量动态生成'ref:'的值。
我尝试使用ref: $(Build.SourceBranch)
,其中$(Build.SourceBranch)
应该扩展为'refs/heads/feature/mybranch'
但这不管用。错误代码:
62638: "/azure-pipelines.yml: Could not get the latest source version for repository MySolution hosted on Azure Repos using ref refs/heads/$(Build.SourceBranch)."
型
4条答案
按热度按时间z31licg01#
不要引用资源中的repo,而是使用这里描述的内联 checkout
https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#checking-out-a-specific-ref
字符串
并且这个yaml元素允许使用模板表达式使用变量、参数,例如
型
或
型
你可以动态地改变它
或者另一种选择是使用脚本任务如下
型
我已经添加了上面作为一个模板和它的用法在一个要点,使它易于重用。
希望能帮上忙
https://gist.github.com/scorpionlion/1773d08b62ca5875cc2fd6dcdd0394d2
dy2hfwbg2#
是否可以在resources:repository for Azure DevOps YAML的ref属性中使用变量?
对于这个问题,答案是肯定的,这是可能的。
关于为什么会收到该错误消息,只是您使用的变量(
$(Build.SourceBranch)
)不正确。您应该使用$(Build.SourceBranchName)
。通常,对于ref,我们应该输入master或任何其他特征分支。比如说
字符串
这可能会让你认为这与
$(Build.SourceBranch)
的值相同。看起来一样,我知道,但不一样。实际上,对于server,它将读取的是分支名称而不是分支路径,这一点我们可以通过经典的编辑器类型清楚地弄清楚:的数据
根据经典的编辑器类型,我们可以知道在这里我们应该输入准确的分支名称。
因此,正如预定义变量所定义的,
$(Build.SourceBranch)
的值是分支路径,但对于$(Build.SourceBranchName)
,它表示的是一个确切的分支名称。因此,如果要成功执行,则需要用途:
$(Build.SourceBranchName)
,我这边也是希望这也能帮助你远离错误信息。
编辑:
完整的脚本是为我工作的是:
型
93ze6v8z3#
Azure文档状态
变量不能用于在YAML语句中定义存储库。
所以这似乎对你在这里能做的事情施加了一些限制。也许有一种变通方法仍然允许你做你想做的事情。
r8uurelv4#
根据https://learn.microsoft.com/en-us/azure/devops/release-notes/2022/sprint-212-update#template-expressions-in-repository-resource-definition,您需要使用 Template Expressions。我遇到过this工作(使用变量)的情况,而在其他管道中,使用变量不工作
字符串
如果不起作用,更改为模板表达式可以起作用。
型