当前课程知识点:软件工程与软件自动化 >  第六章 CI/CD与DevOps >  6.1 持续集成 >  持续集成视频2/2

返回《软件工程与软件自动化》慕课在线视频课程列表

持续集成视频2/2在线视频

下一节:持续交付和持续部署

返回《软件工程与软件自动化》慕课在线视频列表

持续集成视频2/2课程教案、知识点、字幕

既然CI有这么多的好处,在团队中引入CI也不是
很难

那么是什么阻碍了团队在项目中实行持续集成呢

主要原因是团队成员可能对CI存在着一些误解

第一个常见的误解是大家会认为CI会引起开销的
增加

实际上,无论团队是否上CI

都不可避免的要对集成,测试,审查和部署进行
管理和维护

而且维护一个健壮的CI系统肯定要比手工管理这
些过程开销更小

第二个误解是认为需要对项目管理进行大的改变
才能引入CI

一般情况下,我们引入CI系统不会是一蹴而就的

往往是以增量的方式逐步引入

开始的时候我们会以比较低的频率进行构建和测

然后在大家对结果都很满意的时候再逐步增加构
建的频率

第三个误解是因为遇到了太多失败的构建

从而对CI失去信息

构建失败过多往往是因为团队成员在持续集成的
时候

没有进行私有构建就把代码提交到版本控制库中

或者是因为忘记了提交某些文件

又或者是单元测试失败等等

对于失败的构建,必须要给出快速的响应

避免影响其他开发人员的工作

第四个误解是开发人员觉得

实施CI需要购置额外的硬件和软件工具

其实和CI所带来的巨大收益相比

这点软件和硬件的投资又算得了什么呢

最后一个误解是来自于管理者

有些管理者可能会认为

这些自动化的工作原本就是开发者能够完成的

CI系统并没有完成新的工作

但是CI能够以更有效和更可靠的方式

来完成原本由开发者完成的工作

这有助于提高软件开发速度,提高产品质量

在持续集成过程当中

很多开发团队往往把数据库的集成排斥在持续集
成之外

这是因为数据库往往由数据库管理员DBA进行管

而且数据库的管理需要比较专业的知识

程序员对数据库的使用往往都需要通过DBA进行
操作

此外,如果DBA把大部分的时间都花在数据库配

权限访问控制这些琐碎而重复的工作上

他们就不能集中精力进行数据规范化

改进性能,制定新标准这些更高级的工作当中

实际上,如果DBA把数据库相关的任务自动化之

就可以通过自动化脚本来完成数据库的持续集成
工作

这些脚本可以自动完成删除数据库

重新创建数据库以及插入测试数据等等这些操作

同时有了这些脚本,可以很容易的

为每个开发人员建立一个本地的数据库沙盒

这样每个开发者对数据库的变更和测试

都不会影响到其他的开发人员

总之,数据库脚本和源代码一样

都可以纳入到持续集成活动当中去

所有的数据库集成都由构建脚本管理

所有的数据库集成都由构建脚本管理

所有的数据库资产都可以纳入版本控制库中

所有需要和数据库打交道的开发者

都有一个本地的数据库沙盒

大家知道,人工静态代码审查可以发现很多潜在
的bug

但是人工静态代码审查会带来巨大的工作量

而且由于开发人员之间的情感因素影响

开发者之间的代码审查往往会存在着一些漏洞

比较好的一种方案就是利用自动化工具完成

80%的代码审查任务

其余的20%更重要的审查任务由人工来完成

目前,很多自动化静态代码分析工具

可以内置几百种不同的规则

这些工具可以快速的计算代码的复杂度

如果结果超过某个阈值,这些工具就可以发出报

提示开发人员进行调整和改进

不同的机构对代码规范的规定有自己不同的约定

可以通过修改静态工具的内置规则

把企业特有的代码规范加入到代码检查活动中

而且这种检查又可以嵌入到持续集成过程中

达到自动代码审查的目的

如果某个文件的编码规范不符合公司要求

CI系统就会报告给相关人员,从而维持了企业的
标准

有利于企业开发者对于代码的共同理解

比如,在编码实践中

常见的一个代码坏味道就是代码拷贝

目前很多工具都可以自动检测出软件中的复制拷

通过CI系统的持续监控和审查

可以让团队成员遵守架构和编码指南

做到“问题早发现,常发现”

从而避免了长期的维护问题

典型的部署工作由哪些部分构成呢?

无论是哪种平台、哪种技术或者是哪个领域

部署工作一般要经历这些步骤

第一,在版本控制库上打上标签

这说明了这一组的文件是相关的

提供干净的环境可以减少对已有环境的假定

如果漏掉了这些软件环境

哪怕是最简单的构建版本也没有办法运行

为构建版打上标签,就是为二进制文件提供了名

同时构建报告也是基于这些标签生成的

确保所有的测试都能够正确运行

这样才能让我们确信软件能够像我们所希望的那
样工作

生成的反馈报告有利于让大家了解构建版当中

所包含的功能、缺陷和需求

最后,回滚构建版的能力意味着如果出现了什么
问题

开发者依然可以向用户提供最新的能工作的版本

反馈是持续集成的关键输出

如果没有反馈,持续集成的所有工作都没有意义

我们希望快速构建并让构建快速失败

目的就是为了获得反馈信息

如果我们不能及时的修复集成错误

那这种错误将会快速扩展并导致更多的问题

反馈的时候,如果不考虑对象,不考虑时间

不考虑方式,那就达不到反馈的目的

反馈的目标是发出通知,能够触发快速而准确的
行动

所以必须在正确的时间,以正确的方式

将正确的信息送给正确的人

正常的消息应该尽量少发送

因为大量的好消息会淹没那些不好的,真正需要
关注的消息

如果发布消息太过频繁,大家肯定会开始忽略这
些消息

所以,不要让大家习惯于忽略那些发自于集成系
统的消息

此外,各类信息应该分类发送

项目经理,架构师或者技术负责人,开发人员

和测试人员,他们感兴趣的消息是不同的

和测试人员,他们感兴趣的消息是不同的

不要让项目人员接收与他无关的消息

如果项目成员看到了太多的与自己无关的消息

也就没有办法注意到哪些消息是与自己有关的

持续集成的核心就是减少缺陷引入,发现和修复

之间的时间间隔

距离缺陷引入的时间越长

相关负责人员对发生的事情和发送的原因就知道
的越少

就越可能引入同样的缺陷

一般的反馈包括:电子邮件,声音,视频

手机短信息等等,还可以在Windows操作系统的

任务条上弹出构建的结果

下面我们来进行一个简单的小结

首先我们要明确持续集成是一个循序渐进的开发
实践

开发人员可以先在本地引入自动化测试

自动化的代码审查这样的工具

等大家掌握好了基本的自动化开发工具之后

尝到了自动化工具带来的好处

再开始把大家的代码集成起来

从每日构建开始,逐渐加大构建频率

在持续集成的过程中

应该培养团队成员对构建反馈信息的快速处理意

快速发现错误,快速修复错误

提高团队工作效率,提高产品质量

为进一步实现持续交付和持续部署奠定技术基础

好,持续集成就讨论到这里

希望大家能够在自己的电脑上

选择合适的持续集成工具

搭建一个持续集成环境

熟悉持续集成工具的使用

为将来融入一个高效的团队积累经验

谢谢大家

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

持续集成视频2/2笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。