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

有关使用持续集成的建议

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

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

相关指南提高生成速度 标准化 | 工具和流程

随着代码的开发、更新甚至删除,具有直观且安全的方法将这些更改集成到 main 代码分支中,开发人员可以提供价值。

作为开发人员,你可以进行小代码更改,将这些更改推送到代码存储库,并几乎即时获得有关质量、测试覆盖率和引入的 bug 的反馈。 此过程可让你更快地工作,更自信地工作,减少风险。

持续集成 (CI) 是一种实践,其中源代码管理系统和软件部署管道集成在一起,为软件开发团队提供自动化生成、测试和反馈机制。

关键设计策略

持续集成是一种软件开发实践,开发人员使用它定期将软件更新集成到源代码管理系统中。

当工程师创建 GitHub 拉取请求以向 CI 系统发出代码更改准备集成信号时,持续集成过程就会启动。 理想情况下,集成过程根据多个基线和测试验证代码。 然后,它向请求工程师提供有关这些测试状态的反馈。

如果基线检查和测试顺利进行,集成过程将生成并暂存将部署更新的软件的资产。 这些资产包括已编译的代码和容器映像。

持续集成可帮助你通过执行以下操作更快地交付高质量的软件:

  • 针对代码运行自动测试,以提前检测中断性变更。
  • 运行代码分析以确保代码标准、质量和配置。
  • 运行合规性和安全检查,以确保软件没有已知的漏洞。
  • 运行验收或功能测试,以确保软件按预期运行。
  • 提供有关检测到的问题的快速反馈。
  • 在适用的情况下,生成包含更新代码的可部署资产或包。

持续集成管道

要实现持续集成,请使用软件解决方案来管理、集成和自动化流程。 一种常见做法是使用持续集成管道。

持续集成管道涉及一个软件,通常 (云托管) ,可提供:

  • 用于运行自动测试的平台。
  • 合规性扫描。
  • 报告。
  • 构成持续集成过程的其他所有组件。

在大多数情况下,管道软件附加到源代码管理,这样,当创建拉取请求或软件合并到特定分支时,持续集成管道将运行。 源代码管理集成还提供了直接提供有关拉取请求的 CI 反馈的机会。

许多解决方案(如 Azure Pipelines 或 GitHub Actions)都提供持续集成管道的功能。

源代码管理集成

持续集成管道与源代码管理系统的集成是实现快速、自助式代码贡献的关键。

CI 管道在新创建的拉取请求上运行。 管道包括所有测试、安全评估和其他检查。 CI 测试结果直接显示在拉取请求中,以便对质量提供几乎实时的反馈。

另一种常用做法是生成可在源代码管理中呈现的小型报表或锁屏提醒,使当前生成状态可见。

以下映像显示了 GitHub 和 Azure DevOps 管道之间的集成。 在此示例中,拉取请求的创建会触发 Azure DevOps 管道。 管道状态显示在拉取请求中。

GitHub 存储库中 Azure DevOps 状态徽章的屏幕截图。

测试集成

持续集成的一个关键元素是在开发人员贡献代码时持续生成和测试代码。 在拉取请求创建时对其进行测试会提供快速反馈,指出提交未引入中断性变更。 优点是,持续集成管道中的测试可以是在测试驱动开发期间运行的相同测试。

以下代码片段显示了来自 Azure DevOps 管道的测试步骤。 此步骤有两个任务:

  • 第一个任务使用常用的 Python 测试框架来运行 CI 测试。 这些测试与 Python 代码一起位于源代码管理中。 测试结果将转到名为 test-results.xml的文件。
  • 第二个任务使用测试结果,并将其作为集成报表发布到 Azure DevOps 管道。
- script: |
    pip3 install pytest
    pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
    continueOnError: true

- task: PublishTestResults@2
    displayName: 'Publish Test Results'
    inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/test-results.xml'
    failTaskOnFailedTests: true
    testRunTitle: 'Python $(python.version)'

下图显示了 Azure DevOps 门户中显示的测试结果。

Azure DevOps 门户中 Azure DevOps 管道测试的屏幕截图。

失败的测试

失败的测试应暂时阻止部署,并导致对所发生情况进行更深入的分析。 失败的测试还会导致测试的优化或改进导致测试失败的更改。

CI 结果锁屏提醒

许多开发人员通过在存储库中显示状态徽章来表明其代码质量很高。 下图显示了 GitHub 中开源项目的自述文件上显示的 Azure Pipelines 徽章。

GitHub 中自述文件上的 Azure Pipelines 徽章的屏幕截图。

Azure 简化

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

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

GitHub for Actions for Azure 可实现 CI/CD 进程的自动化。 它直接与 Azure 集成,以简化部署。 可以创建工作流来生成和测试存储库中的每个拉取请求,或将合并的拉取请求部署到生产环境。

了解如何使用 GitHub 或 Azure DevOps 创建持续集成管道:

了解如何在存储库中显示锁屏提醒:

卓越运营清单