《持续集成简介课件》由会员分享,可在线阅读,更多相关《持续集成简介课件(19页珍藏版)》请在金锄头文库上搜索。
1、,持续集成简介,优酷数据分析组 田海龙,目录,传统开发回顾,每天的工作:编写代码、编译、运行单元测试、生成文档、打包和部署。工作内容多,而且琐碎。我们怎么才能把精力放在主要业务的实现和代码优化上呢? 如果我们编写的模块对外部系统的有依赖,那么软件集成也是一个问题,而且随着团队的人员的变动,就会对团队协作、软件质量、项目进度的把控提出了更多的要求。 项目过程的后期,系统集成测试发现BUG的返工较多,而且返工的工作量比前期发现BUG的返工工作量还大。 项目上线时,心中总是忐忑不安,拜托千万不要出错。,日常工作中遇到哪些问题? 琐碎的事情,占用了大量的时间?,定义,持续集成是一种软件开发实践,即团队
2、开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 持续集成要求开发人员频繁地提交他们的所完成的工作产品,这个频率通常是至少每天一次,有时候可以多次。每次集成会通过自动化构建(automated build)的方式进行尽量快速地验证,以确保新提交的变化不会造成新的问题。如果在集成的过程中出现异常,则应当快速的反馈给相关的人员。 构建是将源代码放在一起,并验证软件可以作为一个一致的单元运行的过程;验证活动一般包括编译、测试、审查和部署。,价值,减少风险 2. 减少重复
3、过程 3. 任何时间、任何地点生成可部署的软件 4. 增强项目的可见性 5. 建立团队对开发产品的信心,要素,1. 统一的代码库 2. 自动构建 3. 自动测试 4. 每个人每天都要向代码库主干提交代码 5. 每次代码递交后都会在持续集成服务器上触发一次构建 6. 保证快速构建 7. 模拟生产环境的自动测试 8. 每个人都可以很容易的获取最新可执行的应用程序 9. 每个人都清楚正在发生的状况 10. 自动化的部署,原则,1. 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他们的变更不会导致持续集成失败 2. 开发人员每天至少向版本控制库中提交一次代码 3. 开发人
4、员每天至少需要从版本控制库中更新一次代码到本地机器 4. 需要有专门的集成服务器来执行集成构建,每天要执行多次构建 5. 每次构建都要100%通过 6. 每次构建都可以生成可发布的产品 7. 修复失败的构建是优先级最高的事情,目录,如何持续集成,持续集成的最佳实践: 具备10大要素,按照7大原则指导日常工作,寻找最适合我们团队的方法 持续集成环境需要一个自动构建工具、一个代码存储库和一个 CI 服务器,相应的需要安装 Java 平台以及 Jenkins、Maven、JUnit 和 Subversion。,概念神马的都是浮云, 实践是检验真理的唯一标准!,持续集成流程,持续集成流程,目录,Mav
5、en,Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Manangement System),和用来运行定义在生命周期阶段中插件目标的逻辑。 Maven是面向技术层面,针对Java开发项目管理工具,它提供了构建工具所提供功能的超集,除了构建功能之外,Maven还可以管理项目结构、管理依赖关系、生成报告、生成Web站点、有助于团队成员之间的交流与协作。可以理解为项目构建工具。,Maven的价值,指导开发:提供了Java项目的最佳开发实践
6、,自由开发项目骨架而可自动生成项目结构 自动编译:不仅仅只像Ant自动编译,还包括测试,打包,发布,文档生成,项目站点生成 依赖管理:Maven可以方便地管理应用程序依赖,例如第三方依赖、模型依赖 无限扩展:插件模式可以无限增强Maven功能,例如通过Tomcat、Jetty插件可以自由控制其服务器 持续集成:鼓励开发者积极提交代码,更早地发现程序错误,在并行开发中稳妥推进 开发协作:更简单和谐的团队协作,Jenkins,Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括: 1、持续的软件版本发布/测试项目。 2、监控外部调用执行的工作。 Jenkins本身并没有自动构建的功能,Jenkins只是将JDK、Maven等工具集成起来,将持续集成的整个过程可视化。,Jenkins的配置,参考资料,参考书籍:Maven实战机械工业出版社 许晓斌 著 Maven 官方网站:http:/maven.apache.org/ Jenkins官方网站:http:/jenkins-ci.org/,Open Space,Thanks,