《SVN与TortoiseSVN实战系列》已写完,今天新开一个《Jenkins自动化构建系列》,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关于敏捷开发、自动化构建与持续集成的思考就作为开题篇吧。
敏捷是什么?
敏捷是一把伞,这把伞下边有XP、Scrum、FDD。。。,当然也包括自动化构建、持续集成,其实符合敏捷思想的开发方法、工具,如Jenkins都可以属于敏捷开发的范畴,上课时的PPT:
敏捷到底是什么?
其实关于敏捷的定义有很多,Bob Jiang的解释是:尽早地交付商业价值。
为什么需要敏捷开发?
敏捷之所以流行,是因为传统的瀑布式开发方式导致大项目的失败率很高(与小项目对比),而敏捷的解决思路是将大项目分解为小项目(也可以理解为阶段里程碑)来提高项目的成功率,尽早地、频繁地、持续的交付。
大项目与小项目成功率对比图:
为什么需要自动化构建?
传统的开发流程:
敏捷的开发流程:
由于敏捷的开发方式改变了传统的开发流程,需要持续频繁的对代码进行集成、构建、发布,所以就产生了自动化构建与持续集成的需求。
想想每次发布所需的工作:构建、交付准备环境、代码发布全由手工完成,同样还有运行测试、备份旧版本、新版本打标签以及许多其他重复的事情。
计算机就是用来解决重复性工作的,同一项工作重复3次以上就应该使用工具来解决。
Jenkins能解决什么?
Jenkins 是一个开源项目,提供了一种易于使用的自动化构建和持续集成系统。
软件构建自动化:配置完成后,Jenkins会依照预先制定的时间表,或者针对某一特定事件触发,对源代码编译构建;
可持续的自动化检查:Jenkins能持续地获取新增或修改后签入的源代码,并对这些代码使用预先设定的规则进行代码质量检查;
可持续的自动化测试:构建检查的扩展部分,构建后执行预先制定的一套测试规则,如项目中的单元测试、集成测试代码,并收集测试代码覆盖率、结果;
生成后后续过程的自动化:当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。
Jenkins是框架式的,大部分功能通过插件的方式来实现,可扩展性非常高。
手贱百度了下Jenkins的百度指数,大家看出点什么没?
记录,为更好的自己!