持续集成学习笔记-入门篇(10)小结

经过一个多月学习各类材料、做试验,以及一周左右编写、整理学习笔记的过程,入门级的CI学习也算告一段落了。说一下阶段性的心得体会吧。

先讲一下为什么这么安排学习笔记的内容吧:

在一个以项目团队为主体的开发环境中(需要对团队成员进行适度的管理,所以有了《学习笔记9》),首先要搭建好CI的实施环境(《学习笔记2&3:工具选择和环境搭建》),并在持续集成高效地、自动化地工作(《学习笔记4&5&6:持续集成自动化系列》)帮助下,产生两个主要成果:

1、提供给用户使用的软件/WEB产品。产品的(生成、发布、回溯)管理工作需要的一个重要线索就是版本号(所以有《学习笔记8:版本号的管理》)

2、项目设计、开发时产生的必要文档。这些文档通过公司内部技术网站的形式(maven site)进行展示(《学习笔记7:maven项目站点管理》)

一、学习和使用CI的视角

回到最初的CI过程图:

我们可以看出,相关工作是环环相扣的,所以必须以系统化的视角去学习:不能只单独使用个别工具,而是要琢磨如何在将这些工具如何相互配合使用。笔者总结了学习和使用CI的几个原则,即所谓的“四化”建设:

(一)、学习:系统化

系统化自然不用多说,学习时当然不能只看局部,不见整体。不过CI涉及的工具比较杂,刚上手时很容易陷入到某个单独工具的学习中无法自拔,但不久就会发现有很多问题只靠单个工具是无法解决的。所以需要调整学习方向,从纵向深入化的学习方式向横向联系化的学习方式转变。

所以,所谓的“系统化”,就是学习时不应该只把精力放到某个局部,而是想办法看一下不同工具的使用之间是否有关联,怎么互相配合来解决问题。

(二)操作:整合化

所谓整合化,其实也是系统化。只不过方向是思想层面的东西,操作是执行层面的东西而已。笔者为了凑够“四化”之数,硬生生将其从系统化中拆分出来。

在实际工作中,是先遇到问题,再想办法用不同工具解决。所以对CI管理者的实践工作来说,出发点不是要用哪个工具,而是先搞清楚这个问题涉及到那些工具。

主要思路:

1、分析要解决的问题,分解其可能涉及到的各类内容。

比如版本号的自动生成问题,就可以分解为:源代码所在地,取出源代码、产品发布、自动化实施等各类问题,然后看一下应由哪个工具解决。

2、找到连接各工具之间的辅助工具,这个辅助工具实际上就是第三方插件。

如版本发布方面,通过maven-release-plugin将SVN和maven连接起来,通过maven –plugin将Jenkins和maven连接起来。

(三)应用:过程化

所谓过程化,就是针对就是将CI应用到ALM中。虽然,通过开源的CI工具,很难象Rational Rose这样的商业化软件,能够覆盖到软件产品开发的整个生命周期,,但也多多少少会给各阶段带来一些帮助。

从需求分析阶段开始就可以进行持续集成相关工作。持续集成覆盖需求分析、设计、开发、测试、安装部署所有阶段。这里列出笔者能想到的、各阶段与CI相关的工作:

1、 需求分析阶段:

l 生成项目的maven站点,加入项目基本信息和需求分析相关文档

2、 系统设计阶段

l 向maven站点加入系统设计相关文档(功能设计、数据库设计等)

l CI准备工作:确定项目的目录结构;生成SVN仓库;编写POM文件;在Jenkins上新建job

3、 开发、测试阶段:

l 程序员使用TDD开发方式,周期性提交源代码

l CI自动进行代码编译、单元测试,在maven站点自动生成相应运行报告

l 测试人员可以随时进行产品新版本的界面测试

l 需求分析、设计文档如发生变化,也及时提交至maven站点

4、 安装部署阶段:

l 根据开发、测试结果,随时进行阶段性的自动(远程)部署(war/ear等文件)

5、 项目收尾阶段:

l 源代码存档:从SVN仓库中checkout项目各版本的源代码

l 项目文档存档:(如果对设计文档进行了SVN管理)从SVN仓库中checkout文档;备份maven站点

(四)运行:自动化

自动化的重要性不必多说。尽量把非CI人员的手工工作压缩在三方面:编写设计文档、编写源代码、点击“更新”和“提交”键,而极力把其他工作交给机器自动化运行。没有自动化, CI的实际执行效率就会大大缩水。

二、再谈CI的好处

从公司管理或项目管理的角度看,通过持续集成可以达到若干个目的。而其中,团队工作则是笔者最为看重的。

1、项目文档得到管理

ü 可以实现源代码、项目设计文档等文档的备份和版本控制

ü 结合Maven site,我们可以及时向团队成员展示最新的项目文档

找回自我,歇够了,再飞回来,继续面对自己的人生。

持续集成学习笔记-入门篇(10)小结

相关文章:

你感兴趣的文章:

标签云: