什么是持续集成(Continuous integration)
提出者Martin Fowler本人对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是敏捷开发(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。
#####持续集成的核心价值在于:
- 减少风险,减少重复过程
- 任何时间、任何地点生成可部署的软件
- 增强项目的可见性
- 建立团队对开发产品的信心
#####持续集成的原则
- 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他们的变更不会导致持续集成失败。
- 开发人员每天至少向版本控制库中提交一次代码。
- 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。
- 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。
- 每次构建都要100%通过。
- 每次构建都可以生成可发布的产品。
- 修复失败的构建是优先级最高的事情。
- 测试是未来,未来是测试
Jenkins
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
运行 java -jar jenkins.war
运行成功会在用户个人目录下新建.jenkins/文件夹
访问localhost:8080就能到达Jenkins首页
#####系统配置
######邮件配置
系统管理 >> 系统设置
这里以QQ邮箱配置为例,根据自己的邮件提供商修改
######安装Git插件
系统管理 >> 插件管理 >> 可选插件
查找Git plugin,勾选,直接安装,重启Jenkins
Jenkins提供了很多优秀的插件,这里有一篇不错的介绍Jenkins Job相关插件的文章
如果你觉得已有的插件不能满足你的需求,可以自己开发(推荐:浅析Jenkins插件开发)
#####用户与安全
系统管理 >> 管理用户
可添加和管理用户
系统管理 >> Configure Global Security(安全设置)
可配合安全矩阵管理用户权限
DEMO
新建一个freestyle项目
配置源码,这里以git为例,Credential可以配置帐号密码、ssh
https://github.com/wuyanxin/jenkins_nodejs_test 是一份简单示例代码,包含启动失败、启动成功、测试失败、和测试成功的例子构建触发器
我选择的是定时器模式,配置语法如crontab,可点击右侧的问号查看说明。
顺便说说触发远程构建,可以通过远程请求对应URL触发,这个可以配合版本库的hook使用,自动化测试新commit构建
可通过四种方式构建,batch、shell、ant、maven,根据自己需要自行选择。
我用shell, 可以增加多步构建,按顺序执行构建之后
可打包、构建其他项目、发布测试报告、发布javadoc、git发布、邮件提醒
这里就只谈谈邮件提醒这样我们就完成了持续集成环境的搭建,启动失败或者测试失败将会发送邮件通知。
Jenkins面板还提供了构建晴雨表,表示最近5次构建的成功情况,按照下图5种晴雨表图标分别表示最近5个成功、4个成功,3个成功,1或2个成功,全部失败
未完待续…
####参考
Jenkins_百度百科
http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/