大型通信智能运维管理系统的持续集成实践应用论文_马丽

广东海格怡创科技有限公司 广州广东 中国 510630

摘要:在快速迭代"小步快跑"的开发方式中,持续集成实践重要的组成部分。本文通过介绍持续集成相关定义、原则,并分析其带来的价值。同时以大型通信网络智能运维服务管理系统为例,分享自动构建系统方案和实践经验。

关键词:持续集成;Jenkins自动构建;智能运维服务;自动测试

1 引言

大型通信网络智能运维服务管理系统(以下简称通信智能运维管理系统)是一个包容了多种通信手段、多种业务应用、多种劳动力资源、智能指挥调度策略、非线性多约束调度优化理论求解模型、并利用开源“云计算”平台解决求解过程中海量计算所产生的性能问题的复杂的智能指挥调度平台。随着时代的发展,中国移动通信和移动网络的运维工作量日益增长,从而也提高了的通信智能运维管理系统复杂度,扩大了该系统的开发规模。

原有的开发模式已不适应通信智能运维管理系统的开发效率,为了在短时间内,既能实现快速地推出新的功能,又能保证质量和提高开发效率的情况下,笔者作为本公司软件开发中心的QA经理,决定在软件开发过程中加入持续集成的理论和方法,并搭建了一套支持该理论的自动构建系统。

2 持续集成简介

什么是持续集成?持续,就是多次或频繁地,集成,就是在一起:代码、功能逻辑、安装包、环境系统等集合在一起后,不断的对集成后的结果进行改进,就是持续集成(Continuous Integration,CI)。

在笔者看来,持续集成是一种软件开发的实践,持续集成与用哪种开发模型无关,无论在哪一种开发模型中引入持续集成都会给开发过程带来不少的好处和价值。

3 持续集成的原则

业界普遍认同的持续集成的原则,本人总结归纳为以下几点:

(1)使用版本控制工具保证代码提交不会集成失败。常用的版本控制工具有 Subversion、ClearCase、Git、Cvs等;

(2)开发人员必须经常从版本控制库中更新代码到本地,并且也应及时地提交修改或合并后的代码;

(3)一定有独立的持续集成服务器来构建软件产品集成。可以手动构建或者定时构建;

(4)需要每次构建都能保证构建成功,并且构建生成的软件产品都是可发布的;

(5)优先修复构建过程中的错误。一旦修复,则要手动启动一次构建。

4 持续集成的价值

持续集成究竟可以给我们带来怎样的价值呢?笔者通过理论结合实践认为持续集成的价值在于:

易于定位缺陷、降低风险

持续集成要求每天频繁地更新代码集成到单一的代码库进行验证与审查,那么可以更早地发现系统的缺陷或代码冲突。当构建失败时,说明是由新增或者修改的代码引起的,那么就很容易帮助开发人员找出是由谁引发的错误,及时修复错误解决问题,避免了项目后期集中地爆发大量缺陷而带来的风险。

利于持续质量改进

引入代码审查工具,持续地对代码质量审查帮助开发人员对此进行改进。代码质量很大程度上决定了软件的质量,持续地改进代码质量也就是持续地改进了软件的质量。

减少重复、节约成本

在没有使用持续集成工具之前,重复而琐碎的工作在开发集成的过程中发生,如手工更新代码、手工编译、手工测试、人工审查、手工部署等,非常浪费时间与成本。持续集成不需要过多的人工干预,当中的任何一个环节都是自动完成的,有利于减少重复过程以节省工作量、费用和时间,节约项目成本。

利于持续测试

持续集成系统部署到测试环境,测试人员可以更早更快速时发现系统中的问题,并且可以结合自动化测试工具,进行持续自动化测试,可提高软件测试的质量、效率与覆盖率。

增强项目的可控性与可见性

每天多次集成系统,这样无论是开发人员、测试人员还是项目经理都能清楚的看到系统功能的开发完成度、测试缺陷率,增强了团队对项目的可见性,并让整个团队实时地了解项目的进度,改善并增强了项目团队对项目进度的把控能力,为项目做更有效的决策。

生成可部署的软件

持续集成保证了团队成员提交的代码能在每个时间点里是集成成功的。说明在项目进行中任何时候都能及时地发现软件的集成问题,可以随时发布可部署的软件产品。这样,能更早地获得客户的反馈意见,加强与客户的沟通交流,促进软件产品向好的趋势发展。

建立团队对开发产品的信心

持续集成有利于软件产品的健康发展,建立团队对开发软件产品的信心,特别是在需求不明确或是频繁性变更的情景中尤其重要。

5 持续集成自动构建系统方案与实践

自动化是实现持续集成实践的关键,离开了自动化的持续集成的人力成本是巨大的,而且容易出现失误,为了能行之有效地进行持续集成,我们需要搭建起一套持续集成、持续交付的自动构建系统平台。自动构建系统一般由版本控制工具、持续集成服务器、构建工具等工具构成。

持续集成自动构建系统主要实现的功能包括:更新版本、编译程序、单元测试、静态代码检查、集成测试、软件部署、信息反馈等全部自动化。

5.1 方案设计

本设计的自动构建系统方案架构主要有两台服务器组成,其中一台机器是持续集成服务器,负责安装持续集成引擎工具结合构建工具、测试工具、部署工具等进行持续交付、持续部署。另一台机器是版本配置管理服务器,负责对代码进行统一配置管理。

5.1.1 方案工作过程

开发人员每天把本地修改的代码提交到代码管理服务器,持续集成服务器定时或轮询监视代码仓库,一旦发现代码仓库中有代码修改提交,则自动从代码仓库更新代码,执行自动构建、代码检测、测试、部署到不同的环境中,并把结果通过web和E-mail的形式及时反馈给开发人员和测试人员。工作过程如下图:

5.1.2 工具介绍

通信智能运维管理系统是采用JAVA开发的B/S结构的系统,自动化构建系统将从通信智能运维管理系统实际出发(即其开发的语言与架构)考虑选择相应支持的持续集成工具。

Jenkins开源持续集成服务器工具

在市面上持续集成服务器有多种,如Jenkins、Buildbot、Travis CI等。本文中选择了使用最广泛的持续集成工具Jenkins。Jenkins 的前身是 Hudson,是一个开源软件项目,是可扩展的持续集成引擎。选择其的原因如下:

1)易于安装与配置,提供了基于web的用户界面,方便人员直观灵活的进行配置管理;

2)Jenkins 支持用户权限管理,不让淘气鬼乱动;

3)拥有强大而丰富的插件框架;

4)支持多种构建语言,包括Java、Python等;

5)集成了RSS/Email通知机制,构建失败发邮件通知相关人员解决;

6)支持分布式构建。

Jenkins的优点非常多,不得不说Jenkins作为一个开源项目,其插件的开发做得非常出色,使其有强大的扩展性。因此,Jenkins逐渐取代当初流行同类型的持续集成服务器成为后起之秀。

Svn版本配置管理工具

Svn是Subversion 的简称,是当今比较流行又广泛的开源的配置管理工具。Jenkins支持svn插件,加上本软件开发中心也使用Svn对所有软件项目代码进行配置管理,故本设计选择它作为版本配置管理工具。

Ant自动构建打包工具

自动构建打包工具有多种,是选择Ant还是使用更为强大的Maven,或者使用自己编写的构建脚本。出于通信系统是采用本设计使用Ant作为自动构建打包工具。

Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。理论上来说,它有些类似于(Unix)C中的make,但没有make的缺陷,与make相比,Ant语法清晰,使用简单。Ant配合插件使用能够实现许多功能。目前的最新版本为:1.10.1

Findbugs代码审查工具

FindBugs是常用的JAVA项目的静态代码审查工具。通过检查*.class文件(JAVA字节码),可以让开发人员找出隐藏的缺陷从而提高代码质量。

Junit自动化测试工具

JUnit是一个Java语言的开源的单元自动化测试工具。

Publish over SSH插件

由于Jenkins是部署在独立的服务器,要把编译好的安装包部署到其他应用服务器上,则需要远程Publish over SSH插件。该插件主要是通过SSH连接其他Linux机器,远程传输文件及执行Shell命令。

5.2 方案实践

5.2.1 系统搭建部署

本设计的环境的服务器都是在Centos 64位操作系统上进行搭建编译的。由于篇幅有限,只列举主要安装步骤顺序:

首先,安装版本配置管理服务器并创建与配置相关的用户与仓库。

其次,安装持续集成服务器环境与相关工具:

第一步,基本环境依赖包Jdk、Tomcat,注在环境变量中要增加JAVA_HOME相关的配置等。

第二步,安装自动构建工具Ant与Junit单元自动测试工具。

第三步,安装并部署Jenkins:到官网下载jenkins.war包,把下载的WAR包放到持续集成服务器Tomcat的WebApp目录下,重起Tomcat后可以访问http://localhost:8080/jenkins/并打开主页则表示安装成功了。

最后,安装FindBugs代码审查工具和远程SSH插件。

5.2.2 项目自动构建配置

首先,系统配置访问Svn服务器相关信息:SVN源地址、访问SVN库的用户名和密码等。

其次,在系统设置菜单中,设置Publish over SSH的全局设置、SSH Server 配置。SSH Server 配置主要是运程机IP、SSH用户名、SSH端口、连接超时时间等,可以设置多个SSH Server。

接着,创建项目自动构建任务:一般选择构建一个自由风格的软件项目即可,输入任务名称,如通信智能运维管理系统测试环境,就可以进行以下的配置:

a)源码管理:选择相应的Svn源码服务器,根据通信智能运维管理系统架构实际,我们将配置4个Svn代码类库模块。

b)构建触发器:如果配置为空,则表示使用只手工构建。根据通信智能运维管理系统项目的特点我们对于自动构建计划主要采用定时触发的方式。如定时中午12点触发:在创建任务页面上的Build Triggers中选择Build periodically,并在Schedule中输入 0 12,* * * *。

c)构建:我们项目选择Ant构建,选择其中一个原设置好的SSH 服务器配置,并填写该远程应用服务器发布应用时的目录与Shell脚本。

其他配置略过,全部配置设置好后,可以自己手动执行一个构建任务,看是否配置成功。

在实践之前通信智能运维管理系统需要在集成阶段(可能一周甚至一个月才能集成一次)才能发现的代码冲突引起的缺陷,采用自动构建系统后,只要有代码更新最多是一天内就可以发现问题。

通过持续集成在通信智能运维管理系统项目开发过程中改善了软件质量,减少了开发时间,节省了项目成本,降低了项目风险以及减少了重复的手工过程,实现了高效率的协同开发。

6 结论

总而言之,引入持续集成方法和自动构建系统对通信智能运维管理系统甚至整个开发中心的软件开发过程中的带来明显的成效,对本中心的其他软件开发项目具有重要的参考意义,是本中心的项目开发过程改进的模范项目。

持续集成是一个系统工程,需要从持续编译开始到自动化的代码审查,再到自动化的测试,逐步完善、提高,最终实现整体的自动化,最终目标是提高软件开发效率和质量,让开发人员有更多的时间的投入到动脑筋的、更高价值的事情上,提高项目效益。

参考文献:

[1]徐云燕,陆继翔.持续集成在智能电网调度支持系统平台软件开发中的应用[J].水电自动化与大坝监测,2013,(第5期).

[2](美)杜瓦尔等著.持续集成 软件质量改进和风险降低之道.北京:电子工业出版社,2012.06.

[3]王英.持续集成在软件项目管理中的作用[J].福建电脑,2009(12):66—67.

论文作者:马丽

论文发表刊物:《基层建设》2017年第20期

论文发表时间:2017/11/6

标签:;  ;  ;  ;  ;  ;  ;  ;  

大型通信智能运维管理系统的持续集成实践应用论文_马丽
下载Doc文档

猜你喜欢