构建多个分支

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

可以使用 Azure Pipelines 或 TFS 生成 Git 存储库的每个提交和拉取请求。 在本教程中,我们将讨论在 Git 存储库中生成多个分支时的其他注意事项。 将了解如何执行以下操作:

  • 为主题分支设置 CI 触发器
  • 在主题分支中自动生成更改
  • 根据要生成的分支排除或包含生成的任务
  • 通过生成拉取请求使代码质量保持高
  • 使用保留策略清理已完成的生成

先决条件

  • 在 Azure Pipelines、TFS 或 GitHub 中使用应用需要 Git 存储库。 如果没有,我们建议将 示例 .NET Core 应用 导入 Azure Pipelines 或 TFS 项目,或将其分叉到 GitHub 存储库中。 请注意,必须使用 Azure Pipelines 生成 GitHub 存储库。 不能使用 TFS。

  • 还需要存储库的工作生成。

为主题分支设置 CI 触发器

Git 的常见工作流是从主分支创建临时分支。 这些分支称为主题或功能分支,有助于隔离工作。 在此工作流中,将为特定功能或 bug 修复创建分支。 最终,将代码合并回主分支,并删除主题分支。

除非在 YAML 文件中指定 触发器 ,否则任何分支中的更改都会触发生成。 将以下代码片段添加到分支中的 main YAML 文件。 这将导致自动生成对分支所做的任何更改mainfeature/*

trigger:
- main
- feature/*

TFS 上尚不提供 YAML 版本。

在主题分支中自动生成更改

现在,你已准备好将 CI 用于与分支模式匹配的主分支和将来的功能分支。 分支的每个代码更改都将使用自动化生成管道来确保代码的质量仍然很高。

按照以下步骤编辑文件并创建新的主题分支。

  1. 导航到 Azure Repos、TFS 或 GitHub 中的代码。
  2. 为代码创建新的分支, feature/例如 feature/feature-123
  3. 在功能分支中更改代码并提交更改。
  4. 导航到 Azure Pipelines 或 TFS 中的 “管道 ”菜单,然后选择“ 生成”。
  5. 选择此存储库的生成管道。 现在应会看到为主题分支执行的新生成。 此生成由前面创建的触发器启动。 等待生成完成。

典型的开发过程包括在本地开发代码,并定期推送到远程主题分支。 每次推送都会在后台执行生成管道。 生成管道可帮助你提前捕获错误,并帮助你维护可以安全地合并到 main 的质量主题分支。 为主题分支练习 CI 有助于在合并回主分支时最大程度地降低风险。

根据要生成的分支排除或包含生成的任务

主分支通常生成可部署的项目,例如二进制文件。 无需花费时间创建和存储这些项目用于短期功能分支。 在 Azure Pipelines 或 TFS 中实现自定义条件,以便某些任务仅在生成运行期间在主分支上执行。 可以使用具有多个分支的单一生成,并根据条件跳过或执行某些任务。

azure-pipelines.yml编辑分支中的main文件,在 YAML 文件中找到任务,并向其添加条件。 例如,以下代码片段添加用于 发布项目 任务的条件。

- task: PublishBuildArtifacts@1
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))

TFS 上尚不提供 YAML 版本。

验证拉取请求

在合并拉取请求之前,使用策略来保护分支。 在将更改合并到重要分支(如主分支)之前,可以选择始终需要新的成功生成。 还有其他分支策略设置可以不太频繁地生成。 还可以要求一定数量的代码审阅者来帮助确保拉取请求质量高,并且不会导致分支生成中断。

GitHub 存储库

除非在 YAML 文件中指定 pr 触发器,否则会自动为所有分支启用拉取请求生成。 可以为拉取请求生成指定目标分支。 例如,仅针对面向的拉取请求运行生成:和feature/*main

pr:
- main
- feature/*

有关详细信息,请参阅 触发器

TFS 上尚不提供 YAML 版本。

Azure Pipelines 或 TFS 存储库

  1. 导航到 Azure Repos 或 TFS 中的 Repos 中心。
  2. 选择 存储库 ,然后选择 “分支”。 选择 主分支
  3. 你将实现分支策略来保护主分支。 选择分支名称右侧的 省略号 ,然后选择 “分支策略”。
  4. 选中“ 保护此分支”复选框。 有多种选项可用于保护分支。
  5. “生成验证 ”菜单下,选择 “添加生成策略”。
  6. 选择适当的生成管道。
  7. 确保 触发器 设置为自动, 并将策略要求 设置为必需。
  8. 输入描述性 显示名称 来描述策略。
  9. 选择 “保存 ”以创建并启用策略。 选择屏幕左上角的 “保存更改 ”。
  10. 若要测试策略,请导航到 Azure Pipelines 或 TFS 中的 “拉取请求 ”菜单。
  11. 选择“新建拉取请求”。 确保主题分支设置为合并到主分支中。 选择“创建”。
  12. 屏幕显示正在执行 的策略
  13. 选择要检查生成的 策略名称 。 如果生成成功,代码将合并到 main。 如果生成失败,合并将被阻止。

在主题分支中完成工作并合并到 main 后,可以删除主题分支。 然后,可以根据需要创建其他功能或 bug 修复分支。

重要

Azure Pipelines 不再支持每管道保留策略。 建议使用项目级保留规则。

使用保留策略清理已完成的生成

使用保留策略可以控制和自动清理各种生成。 对于较短生存期的分支(如主题分支),你可能希望保留较少的历史记录,以减少混乱和存储成本。 如果在多个相关分支上创建 CI 生成,则保留所有分支的生成将变得不那么重要。

  1. 导航到 Azure Pipelines 或 TFS 中的 “管道 ”菜单。

  2. 找到为存储库设置的生成管道。

  3. 选择屏幕右上角的 “编辑 ”。

  4. 在生成管道名称下,选择 “保留 ”选项卡。选择 “添加” 以添加新的保留策略。

    保留菜单

  5. 分支规范下拉列表中的类型功能/* 。 这可确保与通配符匹配的任何功能分支都将使用策略。

  6. “天数”设置为“ 1”, 将“最小值” 设置为“1”。

  7. 选择 “保存 & 队列 ”菜单,然后选择“ 保存”。

按顺序评估策略,将第一个匹配策略应用于每个生成。 底部的默认规则与所有生成匹配。 保留策略将每天清理生成资源。 始终至少保留一个生成。 还可以选择无限期保留任何特定生成。

后续步骤

本教程介绍了如何使用 Azure Pipelines 或 TFS 管理 Git 存储库中多个分支的 CI。

你已了解如何执行以下操作:

  • 为主题分支设置 CI 触发器
  • 在主题分支中自动生成更改
  • 根据所生成的分支排除或包含生成任务
  • 通过生成拉取请求保持代码质量高
  • 使用保留策略清理已完成的生成