我正在寻找一种解决方案来动态选择要在 Azure 管道中构建的分支。我有 Azure Repos Git,我可以在其中选择项目、存储库和默认分支。我希望能够根据变量选择分支。
我现在正在尝试的是使用Command Line
任务并触发git checkout
命令(例如分支是一个变量):
git checkout $(branch)
我还不能确认它是否有效,但我仍然确认它有效,但我觉得有比检查默认分支然后使用命令行切换分支更好的选择。
我正在寻找一种解决方案来动态选择要在 Azure 管道中构建的分支。我有 Azure Repos Git,我可以在其中选择项目、存储库和默认分支。我希望能够根据变量选择分支。
我现在正在尝试的是使用Command Line
任务并触发git checkout
命令(例如分支是一个变量):
git checkout $(branch)
我还不能确认它是否有效,但我仍然确认它有效,但我觉得有比检查默认分支然后使用命令行切换分支更好的选择。
更新:
如果您想拥有可以为不同分支构建不同分支(版本分支)的单个管道,您可以在分支过滤器的触发器中指定它们。这不会构建所有分支。
您在构建定义中选择的分支只是您手动排队新构建时使用的默认分支。OTOH 构建触发器确定要下载哪个分支,例如,如果构建是由分支开发上的 git push 触发的,那么这就是结帐和构建的那个。看看这个链接:Get the sources from the branch that trigger the build in Team Services
此外,您可以禁用默认的获取源步骤。然后使用您自己的 powershell 脚本和 git 命令手动获取源代码(正是您想要的)并检查分支,最后根据您的变量构建。
对于 YAML,要禁用默认的“获取源”,只需在结帐中指定 none:
checkout: none
对于 UI,请参考我在此问题中的回复: 是否可以忽略/禁用第一步 Get source in vNext Build?
假设您选择默认分支。这并不意味着它是该构建定义可以构建的唯一分支。
您可以选择监控 CI 的分支(在 Triggers 选项卡上,您可以添加多个分支过滤器来表示您希望在提交时构建的分支),并且在触发构建时将检出相应的分支。您还可以在手动排队构建时选择备用分支。
源码链接:从多个分支获取源码
如果要动态选择如下默认分支,目前不可用。
当您手动将此构建排队时,这是您希望成为默认的分支。如果您为构建设置了计划的触发器,那么这是您的构建将从中获取最新源的分支。
当通过持续集成 (CI) 触发构建时,默认分支没有任何影响。通常,您会将其设置为与存储库的默认分支相同(例如,“master”)。
这里有一个相关的用户声音:触发构建时,使用与触发构建相同的分支。您可以投票并跟踪该过程。