Continuous Integration, Continuous delivery, Continuous Delopment
CI - 持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。
举例来说:
就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
Continuous Integration
CI场景如下:
(1)开发人员向版本控制库提交代码,同时,集成构建计算机上的CI服务器正在轮询检查版本控制库中的变更
(2)在提交发生之后,CI服务器检测到版本控制库中发生了变更,所以CI服务器会从库中取得最新的代码副本,执行构建脚本,该脚本将对软件进行集成
(3)CI服务器向指定的项目成员发成电子邮件,提供构建结果的反馈信息。
(4)CI服务器继续轮询版本控制库中的变更。
CI持续集成周期
一个典型的持续集成周期包括以下几个步骤:
(1)持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
(2)如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
(3)等代码完全更新以后,调用自动化编译脚本,进行代码编译。
(4)运行所有的自动化测试。
(5)进行代码分析。
(6)产生可执行的软件,能够提供给测试人员进行测试。
Continuous delivery and continuous deployment
持续交付和持续部署的差别就在于最后一步部署到正式环境是否使用自动化的方式。

原因及价值
如果是团队的协作开发, 分模块开发。自动化部分:
(1) 自动化的运行测试;
(2) 自动产生可部署的二进制成品;
(3) 自动将成品自动部署到近似生产环境;
(4) 自动为CodeBase打上标签;
(5) 自动运行回归测试;
(6) 自动生成度量报告。
想测试的话,你就要用一些测试工具,如JUnit,JWebUnit,Selenium等等;
想检查代码标准的话,你就要用checkstyle等代码规范检查工具;
想要了解测试覆盖率的话,你可能就要用到JCoverage。
当然,想得到二进制文件,就要用到Ant,Make之类的工具。
实现工具
目前使用的比较多的工具当属Bamboo和Jenkins了.
Jenkins的主要任务分为以下两种:持续构建/测试软件项目与以外部方式监控运行任务。
对于前者,Jenkins支持一系列SCM工具——包括Git、Mercurial、Subversion以前Clearcase等等。大家可以以该项目为基础构建Apache Ant以及Apache Maven外加其它shell脚本,或者利用Windows批处理文件完成各类预/后构建操作。需要注意的是,几乎所有配置都能够通过基于Web的GUI完成

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/124538.html