持续集成和Jenkins简介

##都是废话



什么是集成?

Continuous integration(CI)

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

如果没有持续集成

  • 项目做模块集成的时候,发现很多接口都不通。 --浪费大量时间
  • 需要人手动去编译打包最新的代码。 --构建过程不透明
  • 发布代码,上线,基本靠手工。 --脚本乱飞

持续集成最佳实践

  • 维护一个单一的代码库
  • 使构建自动化
  • 执行测试是构建的一部分
  • 集成日志及历史记录
  • 使用统一的依赖包管理库
  • 每天至少集成一次

持续集成概览

dev1和dev2将代码提交到gitlab里面去,jenkins将其进行构建后又反馈给了工程师

 

jenkins 持续集成流程图 jenkins持续集成是什么_数据库

 

 

Jenkins简介

https://jenkins.io/zh/

Jenkins 是一个可扩展的持续集成引擎。 主要用于:

l 持续、自动地构建/测试软件项目。 l 监控一些定时执行的任务。

Jenkins 拥有的特性包括:

    l  易于安装-只要把 jenkins.war 部署到 servlet 容器,不需要数据库支持。 


    l  易于配置-所有配置都是通过其提供的web界面实现。 


    l  集成 RSS/E-mail 通过 RSS 发布构建结果或当构建完成时通过 e-mail 通知。 


    l  生成JUnit/TestNG测试报告。 


    l  分布式构建支持Jenkins能够让多台计算机一起构建/测试。 


    l  文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。 


    l  插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。 


1.1.        Jenkins的由来

目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保 证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您 的开发团队应对如下挑战:

 软件构建自动化 :配置完成后,CI 系统会依照预先制定的时间表,或 者针对某一特定事件,对目标软件进行构建。

 构建可持续的自动化检查 :CI 系统能持续地获取新增或修改后签入的 源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的 代码时,CI 系统会不断确认这些新代码是否破坏了原有软件的成功构 建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费 的时间和精力(说直接一点也是钱啊,呵呵)。

 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定 的一套测试规则,完成后触发通知(Email,RSS 等等)给相关的当事人。

 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的 周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构 件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户 使用。

部署一个 CI 系统需要的最低要求是,一个可获取的源代码的仓库,一个包 含构建脚本的项目。

下图概括了 CI 系统的基本结构:

 

jenkins 持续集成流程图 jenkins持续集成是什么_数据库_02

 

该系统的各个组成部分是按如下顺序来发挥作用的:

1、开发者检入代码到源代码仓库。 


2、CI 系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。

3、CI 系统会在对应的工作区内执行构建过程。

4、(配置如果存在)构建完成后,CI 系统会在一个新的构件中执行定义的一套测试。 
完成后触发通知(Email,RSS 等等)给相关的当事人。

5、(配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用 
服务器)或存储为软件仓库中的一个新版本。软件仓库可以是 CI 系统的一部分,也 可以是一个外部的仓库,诸如一个文件服务器或者像 Java.net、SourceForge 之类的 网站。 


6、CI 系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。 


以下是使用 Jenkins 的一些理由:

  l 是所有CI产品中在安装和配置上最简单的。 


  l 基于 Web 访问,用户界面非常友好、直观和灵活,在许多情况下,还提供AJAX的即时反馈。

  l Jenkins 是基于 Java 开发的(如果你是一个 Java 开发人员,这是非常有用的),但它不仅限于构建基于Java 的软件。 


l Jenkins 拥有大量的插件。这些插件极大的扩展了 Jenkins 的功能;它们都是开源 
的,而且它们可以直接通过 web 界面来进行安装与管理。 


1.2.        Jenkins 的目标 


Jenkins 的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。CI 系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,

它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员, 然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。

特别是它具有以下优点:

  l Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要 
配置一次,所有的项目就都能用。当然也可以通过修改 XML 进行配置。 


  l 支持 Maven 的模块(Module),Jenkins 对 Maven 做了优化,因此它能自动识别 Module, 
每个 Module 可以配置成一个 job。相当灵活。 


  l 测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他 CI,这几乎是件不可能完成的任务。

  l 构件指纹(artifactfingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。