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

有关使用持续集成的建议

适用于此 Azure 精心构建的框架卓越运营清单建议:

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

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

随着代码的开发、更新甚至删除,通过直观且安全的方法将这些更改集成到主代码分支中能够让开发人员提供价值。

作为开发人员,你可以进行小代码更改,将这些更改推送到代码存储库,并获取有关质量、测试覆盖率和引入 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 管道测试的屏幕截图。

失败的测试

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

发布生成状态

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

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

Azure 便利化

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

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

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

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

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

卓越运营清单