APP下载

一种基于Jenkins提升软件产品安装服务质量的自动构建系统

2018-01-02张高毓张建强

软件 2017年12期
关键词:开发人员概预算插件

张高毓,张建强

(中国移动通信集团设计院有限公司山东分公司,山东 济南 250001)

一种基于Jenkins提升软件产品安装服务质量的自动构建系统

张高毓,张建强

(中国移动通信集团设计院有限公司山东分公司,山东 济南 250001)

随着《SmartBudget通信工程概预算软件》用户数的不断增长和软件版本的不断升级,传统手动打包的方式在效率和正确率上的弊端越来越突出,已经不能满足用户对安装服务质量的要求。针对该问题通过构建一种基于 Jenkins的自动构建系统,可以提供更高质量的安装服务,通过与传统手动打包方式进行对比,自动构建系统在效率和正确率上的优势更加突出。

Jenkins;自动构建;手动打包;安装服务质量

0 引言

为了提高设计效率,方便设计人员正确编制预算[1],中国移动通信集团设计院有限公司山东分公司全力研发《SmartBudget通信工程概预算软件》[2],以下均简称(概预算软件)。概预算软件一直致力于为用户提供简洁、高效和正确的用户体验,并为达到该需求不断进行更新和优化,从开发环境、开发框架和数据库均进行了更新和性能提升。

然而,概预算软件一直以来采用手动打包的方式为用户提供安装程序,这种方式严重影响了安装程序的正确率和打包效率,在时间紧任务重的情况还会造成开发人员的资源浪费。基于这种形势,如何充分发挥所有开发人员的能动性,实现概预算软件的“四化”,即模块化、数字化、自动化和智能化,提高打包效率和软件版本正确性,实现开发人员最大价值,进而提升软件安装服务质量和运维支撑,已经成为急需解决的问题。

本文介绍了一种基于Jenkins的自动构建系统,实现软件产品的自动打包,并保证安装程序的正确性,可以为用户提供更高质量的安装服务。另外,通过与传统手动打包方式在性能上的对比,进一步突出自动构建系统的主要优势。

1 传统手动打包存在的问题

随着概预算软件在中国移动通信集团设计院有限公司内部以及其他通信设计企业的广泛使用,其用户数发生了巨大的变化,用户安装使用的反馈也随之增多,其安装服务质量已经成为衡量其可用性的重要标准。

概预算软件共有三个版本,即试用版、设计院内部版和商用版,且每个版本都包含全量安装包和升级包两个版本包供用户选择使用,所以在进行打包时,需至少进行6次打包。传统手动打包的流程如图1所示,开发人员需要完成代码的编写并通过SVN上传代码,利用打包软件NSIS实现手动打包,然后安装软件并进行测试,以保证其正确性,测试无误后最终发布软件。

通过图1完成三个版本的打包,需要重复进行多次相同操作,而这些操作基本都由开发人员人工完成,如果在时间紧任务重的情况下,正确率和效率会大大降低,也造成软件发布的速度严重减慢,重复的打包工作无疑又给开发人员增加了额外的工作量。

图1 手动打包流程图Fig.1 The manual packing flow chart

另外,在软件集中发布版本期间,为了尽早满足用户所需,在最短的时间内开发出完全符合工信部新标准的概预算软件,必须持续为用户提供试用版本,在试用过程中发新问题,并不断优化,最紧张的情况一周可能发布3-4个试用版本。

在这种情况下采用手动打包方式,每次打包时间就要花费半个小时,在紧张的开发阶段,半个小时开发人员可以完成一个小功能的开发、一个BUG修复、一篇说明文档的编写等,这在无形中给开发人员增加了工作量,也增加了开发人员的心理压力。另外,由于开发人员有限,在最紧张时期,为了满足用户需求,可能需要多个开发人员合理完成三个版本的更新,这样更会造成资源的浪费

2 基于Jenkins的自动构建系统

2.1 Jenkins简介

Jenkins[3]是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成[4]变成可能经济界,是基于Java开发的一种持续集成工具[5],用于监控秩序重复的工作,包括:持续的软件版本发布/测试项目和监控外部调用执行的工作。

另外,Jenkins支持一系列SCM工具,包括Git、Mercurial、Subversion以及Clearcase等。用户可以以该项目为基础构建Apache Ant以及Apache Maven外加其它shell脚本,或者利用Windows批处理文件完成各类预/后构建操作。Jenkins同时也可以作为来自第三方供应商的服务方案,更适合运行在自己的服务器之上,不仅能够保证对基础设施问题拥有全面控制能力,同时也有助于企业客户保障软件安全水平。

2.2 Jenkins搭建[6]

1. Jenkins安装和配置

安装:官网下载JDK和Jenkins,并完成安装,Jenkins安装完成后,需要在管理工具->服务中对Jenkins服务进行启动,并将Jenkins配置到apache中,通过浏览器进行访问。

配置:在系统管理->管理插件下,根据项目需要安装MSBuild和Subversion插件,以保障后面配置的顺利进行。

2. 建立SmartBudget项目

新建:点击新建,输入项目名称,完成SmartBudget项目的创建。

配置:对 SmartBudget项目进行配置,包括项动检索更新的时间。

目名称、描述,并设置SVN源代码的管理路径。为了实现项目的自动构建,需要配置触发器,设置自

SmartBudget项目构建完成后的界面如图 2所示,可以查看项目上次构建成功时间、上次构建失败时间、上次构建所使用的时间,另外可以查看console、工作空间等基础信息和配置信息。

2.3 自动构建SmartBudget项目

SmartBudget项目创建以后,需要根据概预算软件的独特特性,通过脚本对项目进行深入配置。

1. 自动打包:采用固定的向导模板,通过编写脚本auto_package.bat获取每个版本的基本信息,进而更新向导模板,最终打包生成实际使用的安装程序。如图2所示。

图2 Smartbudget项目界面Fig.2 The smartbudget UI

图 自动打包脚本Fig.3 Automatic packaging script

2. 版本切换:通过编写脚本 change_version.bat,实现对三个版本的自动切换。如图3所示。

3. 插件检测:概预算软件的正常运行需要用户操作系统中安装.NET 4.5.2和VC++2015两个插件。通过编写脚本auto_package.bat,自动检测目标系统是否安装这两个插件,如果没有检测到相应的注册表信息,则直接运行安装程序进行安装,如果成功检测到相应注册表信息,则忽略插件安装,继续完成概预算软件的安装。如图4所示。

2.4 自动构建系统[7]

在Jenkins的基础上,通过脚本文件进行二次开发,完成自动构建系统的建设,配置概预算软件项目(SmartBudget),搭配SVN代码管理工具实现软件的版本更新和自动打包。概预算软件通过自动构建系统完成版本发布的流程如图5所示。

图4 版本切换脚本Fig.4 Versions switching script

图5 插件检测脚本Fig.5 Plug-in Dectection Script

图6 自动构建系统软件发布流程图Fig.6 The flow chart of automatic construction system

自动构建系统除了可以完成软件版本的自动更新、自动打包,还可以通过控制台输出直接监控打包流程,对打包过程中或者代码中的错误进行提示,使打包流程更加直观,方便后期查阅。另外,自动构建系统可以直接查看每次 SVN代码上传的修改记录,方便开发人员对代码进行管理。除此之外还可以设置自动构建的时间,通过循环对SVN进行监控确定是否自动构建,例如将监控时间设置为15分钟,则系统会每15分钟检查SVN是否存在代码上传,如果存在则直接进行自动构建(版本更新和自动打包),否则再等待下一个15分钟的检查,如此循环往复。

通过自动构建系统可以充分节约人工,方便开发人员将更多的经历集中到软件的应急开发和维护当中,也提高了整个项目的开发效率,另外,自动构建系统生成正确的软件版本也同时提升了概预算软件的安装服务质量。

3 自动构建系统与手动打包方式对比

自动构建系统和手动打包两种方式性能上存在明显差异,下面从两个方面对这两种方式进行比较。

3.1 打包时间

一次自动构建所需时间如图 7所示,时长为2分57秒,根据每次代码更新内容的多少自动构建的时间也会有不同,但一般都在5分钟以内。

采用手动打包的方式,新代码并打包一次一般需要15分钟,打包六次,并且在不出现意外的情况下也要至少90分钟。

自动构建和手动打包两种方式在打包时间上的对比图如图8所示。可以看到自动构建系统打包时间只有手动打包时间的1/18,其速度大大提升。

3.2 打包正确率

通过手动打包的方式,由于人工干预,会在不经意间选错选项,或者遗漏某些内容,造成打包生成的版本不能正常使用,从而需要重新打包,其正确性在一定程度上是有风险的,正确率在80%左右。

图7 一次自动构建完成显示界面Fig.7 The competion UI for one building

图8 自动构建和手动打包一次时间对比图Fig.8 Automatic construction system and manual packing comparison diagram

而自动构建系统生成的打包文件,只要前期在配置打包数据,编写打包脚本时保证正确,在后期的自动打包过程中就可以保证100%的正确性。

通过对自动构建系统和手动打包两种方式在打包时间和打包正确率两种性能上的比较发现,自动构建系统在打包时间和正确率上都远远优于手动打包方式,通过自动构建系统打包生成的概预算软件的正确率的保证,更能提升软件的安装服务质量。

4 总结

基于 Jenkins的自动构建系统既能保证打包的正确性、完整性,还可以为开发人员提供更多的额外支撑,只需要简单的配置和脚本编写就可以实现复杂多变的功能,将原本 1.5小时一次的安装服务包手工打包时间,直接替换为无需人工干预的自动打包,在消除大量人工操作时间的同时,又提升了打包过程的标准化程度,最终为用户提供了高质量的概预算软件的安装服务。

[1] 中华人民共和国工业和信息化部. 《信息通信建设工程预算定额》[S]. 2017.2.

[2] 中华人民共和国工业和信息化部. 《信息通信建设工程概预算编制规程》[S]. 2017.2.

[3] Jobn Ferguson Smart, 郝树伟, 于镇苓译. Jenkins权威指南[M]. 电子工业出版社. 2016.

[4] 徐仕成. 持续集成在现代软件开发中的应用与研究[D].中南大学, 2007.

[5] 吴文平. 持续集成在项目开发中的应用研究[J]. 硅谷, 2011,15.

[6] 陶镇威. 基于Jenkins的持续集成研究与应用[D]. 华南理工大学, 2012.

[7] Joe Enos. 自动化构建: 一致性关键之道[EB/OL]. 2013.

[8] 徐萌. 持续集成在现代企业软件开发中的研究与实现[D].中国海洋大学, 2013.

[9] 张力文. 基于Jenkins的项目持续集成方案研究与实现[D].西安交通大学, 2017.

[10] 卞孟春. 基于Jenkins的持续集成方案设计与实现[D]. 中国科学院大学, 2014.

[11] 段清蛇, 李筠. 基于Jenkins的持续集成测试环境插件开发[M]. 段清蛇李筠. 信息技术, 2013.

An Automatic Construction System Based on Jenkins to Improve The Quality of Installation Service for Software Product

ZHANG Gao-yu, ZHANG Jian-qiang
(China Mobile Group Design Institute Co., Ltd. Shandong Branch, JiNan 250001, China)

As the user growth and version updating ceaselessly of the SmartBudget software, the defects of traditional manual packing on the efficiency and accuracy was more and more outstanding. What's more, this way already couldn't meet the requirements of service qulity from users. An automatic construction system based on Jenkins, can provide a higher quality of installation services. In addition through the comparation with the traditional manual packaging, automatic construction system can provide more advantages in efficiency and accuracy.

Jenkins; Construction automatically; Package manually; The quality of installation servic

TP311

A

10.3969/j.issn.1003-6970.2017.12.033

本文著录格式:张高毓,张建强. 一种基于Jenkins提升软件产品安装服务质量的自动构建系统[J]. 软件,2017,38(12):175-179

张高毓(1990-),中国移动通信集团设计院有限公司山东分公司,咨询设计师,主要负责咨询设计平台工具和软件的研发和支撑;张建强(1974-),中国移动通信集团设计院有限公司山东分公司,高级咨询设计师,研发项目负责人。

猜你喜欢

开发人员概预算插件
自编插件完善App Inventor与乐高机器人通信
Semtech发布LoRa Basics 以加速物联网应用
MapWindowGIS插件机制及应用
基于Revit MEP的插件制作探讨
水利工程的概预算及造价控制探讨
三星SMI扩展Java论坛 开发人员可用母语