持续集成用于Devops 是非常重要的基础设施。能够自动化处理开发后各项工作,让开发者从繁琐的工作解放出来。并且减少出错。把编辑,构建,发布,部署和测试一系列工作作为一个完整的流程自动化执行

持续集成 CI(continuous integration)

在软件工程中,持续集成(CI)是每天将所有开发人员的工作副本合并到共享主线中的一种做法。[1]Grady Booch在1991年的方法中首次提出了CI一词[2],尽管他并不主张每天进行多次集成。极限编程(XP)采纳了CI的概念,并主张每天进行多次集成-每天可能进行多达数十次。

基本原理
  1. 提交主线之前,开发人员需要在本地运行并通过测试
  2. 引入构建服务器,定期甚至会在每次提交之后自动运行自动化测试,并将结果通知开发人员
  3. 除了自动化测试,还经常使用质量控制
  4. 连续交付,单元测试,集成测试,甚至从源码中提取文档并且可以性能分析等
工作流程

大致跟我们现在所使用git wrokflow一致。从一个公共的repo 分支,生成一份副本。然后在副本进行开发,然后再合并到主分支。副本中开发的时间越久,因为有源源不断的副本往主分支中提交代码,跟存储库之间的不同越大。会陷入“合并地狱”的情况。在合并到主分支的过程中,持续集成会通过集成服务器进行完整的单元测试

Jenkins

  1. Jenkins是一个免费的开源自动化服务器。Jenkins通过持续集成并促进持续交付的技术方面,帮助实现软件开发过程中非人为部分的自动化。它是基于服务器的系统,可在servlet容器(例如Apache Tomcat)中运行。它支持各种版本控制工具,包括AccuRev,CVS,Subversion,Git etc,并且可以执行基于Apache Ant,Apache Maven和sbt的项目以及任意的shell脚本和Windows批处理命令。Jenkin的创造者是川口晃介(Kohsuke Kawaguchi)。
  2. 可以通过各种方式触发构建,例如通过版本控制系统中的提交,通过类似cron的机制进行调度以及请求特定的构建URL。也可以在队列中的其他构建完成后触发它。Jenkins功能可以通过插件扩展。
  3. Jenkins项目最初命名为Hudson,并在与Oracle发生纠纷后重命名,Oracle对该项目进行了分叉并要求拥有该项目名称的权利。
    Oracle分支Hudson在捐赠给Eclipse Foundation之前继续开发了一段时间

参考资料