你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

有关提高生成速度的建议

适用于此 Azure Well-Architected 框架卓越运营清单建议:

OE:04 遵循行业经过验证的开发和测试做法,优化软件开发和质量保证流程。 为了明确指定角色,请跨组件(如工具、源代码管理、应用程序设计模式、文档和样式指南)标准化做法。

相关指南有关标准化工具和流程 | 的建议使用持续集成的建议

本指南介绍有关提高部署基础结构性能的建议。 在产品开发的第一天启动并运行生成过程非常重要。 生成是持续交付系统的检测信号,因为生成状态显示产品何时可部署。 生成提供有关产品状态的重要信息,因此应始终努力实现快速生成。

如果生成时间较长,则很难解决生成问题。 当延迟发生并规范化时,团队往往变得不那么积极主动地解决问题。

关键设计策略

生成时间

若要执行更快的生成,可以:

  • 选择满足性能要求的代理:通过选择正确的生成计算机来加快生成速度。 速度快的计算机可以在小时和分钟之间产生差异。 如果管道位于 Azure Pipelines 中,则可以使用 Microsoft 托管的代理运行作业。 使用 Microsoft 托管的代理时,系统会为你负责维护和升级。 有关详细信息,请参阅 Microsoft 托管的代理

  • 优化生成服务器位置:生成代码时,数据会通过网络发送。 生成输入是从源代码管理存储库和项目存储库中提取的。 需要复制生成过程的输出,包括已编译的项目、测试报告、代码覆盖率结果和调试符号。 快速运行这些复制操作非常重要。 如果使用自己的生成服务器,请确保生成服务器位于源和目标位置附近。 快速上传和下载可以减少总体生成时间。

  • 横向扩展生成服务器:单个生成服务器可能足以满足小型产品的需求。 随着产品的规模和范围以及处理产品的团队数量的增加,单台服务器可能不够。 达到限制时,在多台计算机上水平缩放基础结构。 有关详细信息,请参阅 创建和管理代理池

  • 优化生成

    • 添加并行作业以加快生成过程。 有关详细信息,请参阅配置并行作业并为其付费

    • 启用并行测试套件运行,这通常可以节省大量时间,尤其是在运行集成和 UI 测试时。 有关详细信息,请参阅 针对任何测试运行器并行运行测试

    • 使用乘数的概念,可在其中通过多个生成代理横向扩展生成。 有关详细信息,请参阅在管道中指定作业

    • 请考虑将集成、UI 和冒烟测试移动到发布管道。 移动到发布管道可提高生成速度和生成反馈循环的速度。

    • 将生成项目发布到包管理解决方案,例如 NuGet 或 Maven。 发布到包管理解决方案可以更轻松地重用生成项目。

人工干预

你的组织可能会选择创建多种不同类型的生成来优化生成时间。 可能的生成包括:

  • 持续集成 (CI) 生成:此生成的目的是确保编译代码并运行单元测试。 每次提交时都会触发此生成。 它充当项目的检测信号,并立即向团队提供质量反馈。 有关详细信息,请参阅 指定触发管道的事件

  • 夜间生成:夜间生成的目的不仅在于编译代码,还旨在确保每个生成定期运行效率低下的任何大型测试套件。 通常,这些测试包括集成、UI 或冒烟测试。 有关详细信息,请参阅配置管道的计划

  • 发布版本:除了编译和运行测试外,此生成还编译 API 文档、合规性报告、代码签名以及每次生成代码时不需要执行的其他步骤。 此生成提供推送到发布管道的黄金副本,以便最终在生产环境中部署。

组织所需的生成类型取决于各种因素,包括团队和组织的成熟度、你正在研究的产品类型和部署策略。

Azure 便利化

Azure DevOps 是一系列服务,可帮助你构建协作、高效且一致的开发实践。

使用 Azure Pipelines 生成和发布服务,以支持应用程序的持续集成和持续交付 (CI/CD) 。

使用 GitHub Actions for Azure 自动执行 CI/CD 过程,并与 Azure 直接集成以简化部署。 还可以创建工作流来生成和测试每个对存储库的拉取请求,或者使用 Azure GitHub Actions将合并的拉取请求部署到生产环境。

Microsoft 托管的代理Azure Pipelines 中以本机方式提供。 这些代理是一次性虚拟机,仅用于一个作业,然后被丢弃,这为生成提供了一个易于管理的选项。

卓越运营清单

请参阅完整的一组建议。