【问题标题】:Is it possible to set source dynamically in Azure Repos Git?是否可以在 Azure Repos Git 中动态设置源?
【发布时间】:2020-01-31 15:00:57
【问题描述】:

我正在寻找一种解决方案来动态选择要在 Azure 管道中构建的分支。我有 Azure Repos Git,我可以在其中选择项目、存储库和默认分支。我希望能够根据变量选择分支。

我现在尝试的是使用Command Line 任务并触发git checkout 命令(例如,分支是一个变量):

git checkout $(branch)

我无法确认它是否正常工作,但仍然我确认它可以正常工作,但我觉得有比检查默认分支然后使用命令行切换分支更好的选择。

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-build-task azure-repos


    【解决方案1】:

    更新:

    如果您想拥有可以为不同分支构建不同分支(版本分支)的单个管道,您可以在分支过滤器的触发器中指定它们。这不会构建所有分支。

    您在构建定义中选择的分支只是您手动排队新构建时使用的默认分支。 OTOH 构建触发器确定要下载哪个分支,例如如果构建是由分支开发上的 git push 触发的,那么这就是签出和构建的。看看这个链接:Get the sources from the branch that triggered the build in Team Services

    此外,您可以禁用默认获取源步骤。然后使用您自己的 powershell 脚本和 git 命令手动获取源代码(正是您想要的)并检查分支,最后根据您的变量构建。


    假设您选择默认分支。 这并不意味着 它是唯一可以由该构建定义构建的分支。

    您可以选择监控 CI 的分支(在触发器选项卡上, 您可以添加多个分支过滤器来表示您想要的分支 在提交时构建),并且将签出相应的分支 当构建被触发时。您还可以选择备用分支 手动排队构建时。

    来源链接:Get Sources from multiple branches

    如果要动态选择如下default branch,目前不可用。

    这是您手动时希望成为默认的分支 排队这个构建。如果您为构建设置了计划的触发器,则此 是您的构建将从中获取最新源的分支。

    触发构建时默认分支没有影响 通过持续集成 (CI)。 通常您会将其设置为 与存储库的默认分支相同(例如, “主人”)。

    这里有一个相关的用户声音:When triggering a build, use the same branch as the trigger build.您可以投票并跟踪过程。

    【讨论】:

    • 我想要一个可以构建不同分支(版本分支)的管道,而不是所有分支。我们可以从变量集开始构建,所以我想像使用 TFVC 一样,我们可以传递该变量来选择源。
    • @Lukasz'Severiaan'Grela 对于不同的分支,您可以在触发器中指定它们。您在构建定义中选择的分支只是您手动排队新构建时使用的默认分支。 OTOH 构建触发器确定要下载哪个分支,例如如果构建是由分支开发上的 git push 触发的,那么这就是签出和构建的。看看这个链接stackoverflow.com/questions/44133816/…
    • @Lukasz'Severiaan'Grela 如果您坚持使用可变解决方案,您可以禁用 Azure DevOPs 管道中的默认获取源步骤 stackoverflow.com/questions/46421482/… 然后使用您自己的 powershell 脚本和 git 命令获取源代码并根据您的变量签出要构建的分支。
    • 请在答案中包含这些说明,我很乐意将其视为答案,谢谢。
    • @Lukasz'Severiaan'Grela 已完成,感谢您的热情回复。
    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2022-07-19
    相关资源
    最近更新 更多