cd的元素及意思解释 cd是什么( 三 )


除此之外 , 可以有或者应该有各种形式的测试 。 这些可包括:

  • 集成测试 验证组件和服务组合在一起是否正常 。
  • 功能测试 验证产品中执行功能的结果是否符合预期 。
  • 验收测试 根据可接受的标准验证产品的某些特征 。 如性能、可伸缩性、抗压能力和容量 。
所有这些可能不存在于自动化的管道中 , 并且一些不同类型的测试分类界限也不是很清晰 。 但是 , 在交付管道中持续测试的目标始终是相同的:通过持续的测试级别证明代码的质量可以在正在进行的发布中使用 。 在持续集成快速的原则基础上 , 第二个目标是快速发现问题并提醒开发团队 。 这通常被称为快速失败 。
除了测试之外 , 还可以对管道中的代码进行哪些其它类型的验证?除了测试是否通过之外 , 还有一些应用程序可以告诉我们测试用例执行(覆盖)的源代码行数 。 这是一个可以衡量代码量指标的例子 。 这个指标称为 代码覆盖率(code-coverage) , 可以通过工具(例如用于 Java 的 JaCoCo )进行统计 。
还有很多其它类型的指标统计 , 例如代码行数、复杂度以及代码结构对比分析等 。 诸如 SonarQube 之类的工具可以检查源代码并计算这些指标 。 此外 , 用户还可以为他们可接受的“合格”范围的指标设置阈值 。 然后可以在管道中针对这些阈值设置一个检查 , 如果结果不在可接受范围内 , 则流程终端上 。 SonarQube 等应用程序具有很高的可配置性 , 可以设置仅检查团队感兴趣的内容 。
什么是“持续交付”?持续交付(CD)通常是指整个流程链(管道) , 它自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本 , 基本上没有任何人为干预 。
持续交付在软件开发过程中的目标是自动化、效率、可靠性、可重复性和质量保障(通过持续测试) 。
持续交付包含持续集成(自动检测源代码变更、执行构建过程、运行单元测试以验证变更) , 持续测试(对代码运行各种测试以保障代码质量) , 和(可选)持续部署(通过管道发布版本自动提供给用户) 。
如何在管道中识别/跟踪多个版本?版本控制是持续交付和管道的关键概念 。 持续意味着能够经常集成新代码并提供更新版本 。 但这并不意味着每个人都想要“最新、最好的” 。 对于想要开发或测试已知的稳定版本的内部团队来说尤其如此 。 因此 , 管道创建并轻松存储和访问的这些版本化对象非常重要 。
在管道中从源代码创建的对象通常可以称为 工件(artifact) 。 工件在构建时应该有应用于它们的版本 。 将版本号分配给工件的推荐策略称为 语义化版本控制(semantic versioning) 。 (这也适用于从外部源引入的依赖工件的版本 。 )
语义版本号有三个部分: 主要版本(major)、 次要版本(minor) 和 补丁版本(patch) 。 (例如 , 1.4.3 反映了主要版本 1 , 次要版本 4 和补丁版本 3 。 )这个想法是 , 其中一个部分的更改表示工件中的更新级别 。 主要版本仅针对不兼容的 API 更改而递增 。 当以 向后兼容(backward-compatible)的方式添加功能时 , 次要版本会增加 。 当进行向后兼容的版本 bug 修复时 , 补丁版本会增加 。 这些是建议的指导方针 , 但只要团队在整个组织内以一致且易于理解的方式这样做 , 团队就可以自由地改变这种方法 。 例如 , 每次为发布完成构建时增加的数字可以放在补丁字段中 。
如何“分销”工件?团队可以为工件分配 分销(promotion)级别以指示适用于测试、生产等环境或用途 。 有很多方法 。 可以用 Jenkins 或 Artifactory 等应用程序进行分销 。 或者一个简单的方案可以在版本号字符串的末尾添加标签 。 例如 , -snapshot 可以指示用于构建工件的代码的最新版本(快照) 。 可以使用各种分销策略或工具将工件“提升”到其它级别 , 例如 -milestone 或 -production , 作为工件稳定性和完备性版本的标记 。
如何存储和访问多个工件版本?从源代码构建的版本化工件可以通过管理 工件仓库(artifact repository)的应用程序进行存储 。 工件仓库就像构建工件的版本控制工具一样 。 像 Artifactory 或 Nexus 这类应用可以接受版本化工件 , 存储和跟踪它们 , 并提供检索的方法 。
管道用户可以指定他们想要使用的版本 , 并在这些版本中使用管道 。
什么是“持续部署”?持续部署(CD)是指能够自动提供持续交付管道中发布版本给最终用户使用的想法 。 根据用户的安装方式 , 可能是在云环境中自动部署、app 升级(如手机上的应用程序)、更新网站或只更新可用版本列表 。

推荐阅读