所有持续交付管道都应该被自动化吗?管道的几乎所有部分都是应该自动化的 。 对于某些部分 , 有一些人为干预/互动的地方可能是有意义的 。 一个例子可能是 用户验收测试(user-acceptance testing)(让最终用户试用软件并确保它能达到他们想要/期望的水平) 。 另一种情况可能是部署到生产环境时用户希望拥有更多的人为控制 。 当然 , 如果代码不正确或不能运行 , 则需要人工干预 。
有了对“持续”含义理解的背景 , 让我们看看不同类型的持续流程以及它们在软件管道上下文中的含义 。
什么是“持续集成”?持续集成(CI)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程 。 持续集成是启动管道的环节(尽管某些预验证 —— 通常称为 上线前检查(pre-flight checks) —— 有时会被归在持续集成之前) 。
持续集成的目标是快速确保开发人员新提交的变更是好的 , 并且适合在代码库中进一步使用 。
持续集成是如何工作的?持续集成的基本思想是让一个自动化过程监测一个或多个源代码仓库是否有变更 。 当变更被推送到仓库时 , 它会监测到更改、下载副本、构建并运行任何相关的单元测试 。
持续集成如何监测变更?目前 , 监测程序通常是像 Jenkins 这样的应用程序 , 它还协调管道中运行的所有(或大多数)进程 , 监视变更是其功能之一 。 监测程序可以以几种不同方式监测变更 。 这些包括:
- 轮询:监测程序反复询问代码管理系统 , “代码仓库里有什么我感兴趣的新东西吗?”当代码管理系统有新的变更时 , 监测程序会“唤醒”并完成其工作以获取新代码并构建/测试它 。
- 定期:监测程序配置为定期启动构建 , 无论源码是否有变更 。 理想情况下 , 如果没有变更 , 则不会构建任何新内容 , 因此这不会增加额外的成本 。
- 推送:这与用于代码管理系统检查的监测程序相反 。 在这种情况下 , 代码管理系统被配置为提交变更到仓库时将“推送”一个通知到监测程序 。 最常见的是 , 这可以以 webhook 的形式完成 —— 在新代码被推送时一个 挂勾(hook)的程序通过互联网向监测程序发送通知 。 为此 , 监测程序必须具有可以通过网络接收 webhook 信息的开放端口 。
例如 , 一个名为 Gerrit 的工具允许在开发人员推送代码之后但在允许进入( Git 远程)仓库之前进行正式的代码审查、验证和测试构建 。 Gerrit 位于开发人员的工作区和 Git 远程仓库之间 。 它会“接收”来自开发人员的推送 , 并且可以执行通过/失败验证以确保它们在被允许进入仓库之前的检查是通过的 。 这可以包括检测新变更并启动构建测试(CI 的一种形式) 。 它还允许开发者在那时进行正式的代码审查 。 这种方式有一种额外的可信度评估机制 , 即当变更的代码被合并到代码库中时不会破坏任何内容 。
什么是“单元测试”?单元测试(也称为“提交测试”) , 是由开发人员编写的小型的专项测试 , 以确保新代码独立工作 。 “独立”这里意味着不依赖或调用其它不可直接访问的代码 , 也不依赖外部数据源或其它模块 。 如果运行代码需要这样的依赖关系 , 那么这些资源可以用 模拟(mock)来表示 。 模拟是指使用看起来像资源的 代码存根(code stub) , 可以返回值 , 但不实现任何功能 。
在大多数组织中 , 开发人员负责创建单元测试以证明其代码正确 。 事实上 , 一种称为 测试驱动开发(test-driven develop)(TDD)的模型要求将首先设计单元测试作为清楚地验证代码功能的基础 。 因为这样的代码可以更改速度快且改动量大 , 所以它们也必须执行很快 。
由于这与持续集成工作流有关 , 因此开发人员在本地工作环境中编写或更新代码 , 并通单元测试来确保新开发的功能或方法正确 。 通常 , 这些测试采用断言形式 , 即函数或方法的给定输入集产生给定的输出集 。 它们通常进行测试以确保正确标记和处理出错条件 。 有很多单元测试框架都很有用 , 例如用于 Java 开发的 JUnit 。
什么是“持续测试”?持续测试是指在代码通过持续交付管道时运行扩展范围的自动化测试的实践 。 单元测试通常与构建过程集成 , 作为持续集成阶段的一部分 , 并专注于和其它与之交互的代码隔离的测试 。
推荐阅读
- 小程序增粉的方法与步骤 小程序如何增粉
- 怎么和陌生人聊天,如何跟别人聊天的技巧
- 跟狮子男聊天要主动吗-狮子男喜欢的聊天模式
- 七夕节送女朋友什么-女生渴望收到的礼物
- 手机ps修图_转为手机用户打造的美图软件_内购破解版
- 实用的撩妹聊天技巧-撩妹聊天技巧男女对话
- 怎么和女生聊污的话题-女生和男生聊污的话题
- qq如何搭讪不认识的男生聊天
- 七夕怎么向喜欢的女生表白-七夕表白的话真实点的
- 一款可以让手机屏幕投屏到电视上的软件!推荐使用的软件~ 〖安卓软件〗手机投屏助手