当 TFVC 为源存储库时,Azure Pipelines 是否支持使用同一管道构建和发布多个功能分支?

问题描述 投票:0回答:1

问题

我们希望能够从不同的功能分支构建代码并将其部署到各种环境,而不必在每次拥有功能分支时克隆和修改构建和发布管道。使用 TFVC 源代码管理时,Azure Pipelines 是否支持构建多个分支并在管道中执行基于分支的条件任务?如果是的话,怎么办?

背景

在本地运行 Azure DevOps Server 2020 Update 1。我们的代码存储库中有多个应用程序,每个应用程序都有自己的开发、主要和功能分支,使用 TFVC 作为源控制存储库。 源代码控制存储库结构如下:

Team Project
  /Apps
    /App 1
      /dev branch
      /dev-feature-1 branch
      /dev-feature-2 branch
      / main branch
    /App 2
      /dev branch
      /dev-feature-1 branch
      /dev-feature-2 branch
      / main branch
  /Utilities
  /SomeCommonStuff

我们有经典的(不是 YAML)构建管道,可以为我们的每个开发分支和主分支构建、执行门控签入和发布工件。 然后,我们有发布管道,从这些构建中获取工件并将它们部署到我们的不同环境(开发、QA、生产)

迄今为止对问题所做的研究

根据此文档:Azure Pipelines 似乎支持使用 Git 作为源代码控制存储库在一个构建管道中构建多个分支,因为您可以指定执行某些任务,例如使用支持的条件仅在某些分支中构建某些解决方案文件Build.SourceBranch 变量(如此处所述)。

但是,当使用 TFVC 作为源并尝试进行构建时,它不会将 Build.SourceBranch 变量设置为分支名称(即:在我们的例子中为 dev、dev-feature-1、main 等),但只是将其设置为团队项目的根目录(即在我们的例子中:$/Team Project),因此我们无法根据正在构建的分支执行条件逻辑来执行某些任务,这使得我们不能使用一个构建定义构建多个分支,并且可能让我们只能为每个功能分支创建一个新的构建和发布管道(这将是乏味的)。

azure-devops azure-pipelines azure-pipelines-release-pipeline tfvc
1个回答
2
投票
不,Azure Pipelines 不支持构建的高级映射,TFVC 也不支持 YAML 管道。

有一些解决方法,但在我们探索这些方法之前,我必须强烈敦促您和您的团队考虑迁移到 Git。 TFVC 显然已经走到了生命周期的尽头。 TFVC 是一条死胡同。

至于解决方法:

为了确保您知道要构建哪个分支,您可以在队列时设置一个变量或查看触发构建的变更集以确定它触发的分支。

但是无论您选择哪种解决方法,请开始计划向 Git 的迁移。

© www.soinside.com 2019 - 2024. All rights reserved.