MelonTeam 移动终端前沿技术的探索者

持续集成在后台开发中的运用

2017-11-29
fredcmeng

导语 探索持续集成在后台开发中的运用

什么是持续集成

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

持续集成对于后台开发的重要性

后台开发测试流程一般主要是开发机开发编译——》拷贝文件到测试机——》重启服务这三个环节,每一步都有很多影响工作效率的问题。首先,在编译环节,随着工程复杂度和代码量的增加,编译耗时越来越久,等待编译是一个很浪费时间的事情,人工切换无法及时得到编译结果;其次,拷贝文件到测试机,不仅需要手动登录到测试机的相关目录,文件过大时,拷贝的过程也需要一些时间;最后重启服务也需要手动执行命令,在敏捷开发的过程中,这些操作需要频繁重复执行,如果有一个平台可以把这些操作集成起来自动执行,则可以极大的提高开发人员的工作效率,持续集成就是专门为解决这类问题而产生的。

持续集成在后台开发中的运用

持续集成的工具有很多,每个工具的侧重点不同适用于不同的场景,在这个页面上https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software有对常见的一些工具通过不同的角度做了比较,其中jenkins相对来说功能较为全面,安装使用极其简单,公司内部很多团队也有在使用,因此我们也选择了它作为我们的尝试,因为后台都是在linux下开发测试,所以下面主要讲述jenkins在linux系统下的安装使用。

jenkins的运行需要依赖jdk,所以首先需要下载安装jdk,然后从官网上下载jenkins的war包源码。

得到源码之后,有两种运行方式,一是把jenkins放在tomcat容器中运行,这种方式相对比较简单,只需要配置好tomcat就可以执行;二是通过java命令行java -jar jenkins.war的方式运行,因为jenkins自带一些命令行参数支持,所以命令行模式下,可以对jenkins做很多定制化的设置,例如jenkins首页链接后缀的修改,默认情况下只能通过服务器的80端口访问,而80端口一般都是由nginx服务监听占用的,所以我们通过修改url后缀,让jenkins监听非80端口,通过nginx的链接转发配置来访问。

java -jar jenkins.war --httpPort=8090 --prefix=/jenkins

因为链接需要域名加后缀,人工记忆输入极为不便,所以我们选择把jenkins集成到现有的内部网站中作为其中一个tab页面,通过点击跳转来访问。

jenkins的安全管理有多种模式,可以不需要登录直接访问,或者允许注册用户登录访问,不登录直接访问太不安全,注册用户需要大家再记忆一套账号密码,而且也无法直接和本人对应起来,不方便问题的查找和定位,我们选择通过安装公司同事分享的rtx登录插件,使用rtx的方式登录,这样大家可以直观的看到历史版本的编译记录和对应负责人。

接下来就是工程的配置,jenkins支持svn、git等多种代码托管方式,因为涉及权限问题,这里我们不做代码托管,而是通过执行shell命令,登录到开发机上进行代码的更新和编译,文件的拷贝以及服务重启也都是通过配置拷贝文件、远程登录测试机并执行重启的shell命令来实现,基本做到一键完成代码更新、编译、文件拷贝和服务重启整个流程。

可不可以做得更好

除了编译和部署,自动化测试也是持续集成中非常重要的一部分,jenkins自身的插件包支持Junit单元测试,其他的测试工具可以手动部署,通过配置shell脚本的方式来执行,jenkins还有生成html格式报告的功能,可以把执行结果生成html报告,方便查看和存档,目前后台主要是用c++进行开发,这方面的功能还需要继续探索实践。


说一说

目录