[敏捷开发实践] Jenkins与持续集成(Continuous Integration)之概述

Jenkins与持续集成(Continuous Integration)之概述

1. 持续集成(CI,Continuous Integration)的定义

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

总结一下,持续集成就是:指开发阶段,对项目进行持续性自动化编译、测试,以达到控制代码质量的手段。持续集成是一种软件开发实践。持续集成的宗旨是避免集成问题。

在敏捷开发方法中,无论是XP或者Scrum方法,持续集成需要达到最佳成果,必须依靠着自动化集成单元测试并通过测试驱动开发(TDD)。 

2. 为什么需要持续集成

持续集成对单元测试较为依赖,测试覆盖率越高,单元测试越准确,越能体现持续集成的效果。

持续集成主要在以下方面提供好处:

  • 持续自动化测试(持续集成可通过时间间隔触发,或其他方式触发)
  • 跟踪工程健康状况
  • 强制性单元测试用例,验收测试用例等
  • 静态代码检测,生成测试报告

3. 持续集成的价值

持续集成的价值体现在:

  • 减少项目风险
  • 减少开发中的重复过程
  • 任何时间任何地点生成可部署的软件
  • 增加项目的可见性
  • 建立团队对开发产品的信心

4. 持续集成要素

  • 统一的代码仓库(Git、SVN等)
  • 自动构建、自动化测试
  • 每位开发成员每天都要向代码库提交代码
  • 保证快速构建
  • 模拟生产环境的自动化测试
  • 每位开发成员都可以很容易的获得最新的代码
  • 每位开发成员都清楚项目正在发生的状况
  • 自动化部署

5. 持续集成的原则

  • 所有开发人员需要在本地机器上做好本地构建,然后提交到代码仓库(版本控制仓库,Source Control Repository)中,从而确保他们的更改不会导致持续集成失败。
  • 开发人员每天至少向版本库提交一次代码
  • 开发人员每天至少需要从版本控制库中更新一次代码到本地机器

6. 持续集成的流程

下图展示了持续集成(CI)的一个最简单的工作流程。

假设我们已经配置好了持续集成服务器(Continuous Integration Server),我们来看看这个工作流程中发生的一些事情:

  1. Developers向代码仓库提交新的Source Code(使用SCM工具)。SCM:Software Configuration Management的缩写。
  2. 代码仓库收到新提交的代码后,CI Server自动触发构建,从代码仓库拉取(Poll SCM)最新的代码到Project Work Space中。CI 系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
  3. CI 系统会在对应的工作区内执行构建过程。
  4. 构建完成后,CI 系统会在一个新的构件中执行定义的一套测试。 完成后触发通知(Email,RSS 等等)给相关的开发者。
  5. 如果构建成功,这个构件会被打包并转移到一个部署目标(如服务器)或存储为代码仓库中的一个新版本。代码仓库可以是 CI 系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器等。
  6. CI 系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件(Artifacts),而 Jenkins 就是这样一个 CI 系统。

7. 持续集成利器 — Jenkins

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

利用Jenkins构建项目时,有多种选择:

  • 构建一个自由风格的软件项目
  • 构建一个maven项目
  • 构建一个多配置项目
  • 监控一个外部的任务
  • 复制已有的Iteam

当我们选择构建一个自由风格的软件项目时,意味着我们可以选择按照自己的SCM和任何构建系统来构建软件项目。我们在Jenkins的配置页面填写项目名称和描述信息之后,可以选择:

  • 丢弃旧的构建
  • 参数化构建过程
  • 关闭构建(重新开启构建前不允许进行的新的构建)
  • 在必要的时候并发构建
  • 限制项目运行

接下来需要配置:

源码管理方式

构建触发方式(触发远程构建——使用Scripts,Build after other projects are built,定时构建,或者 Poll SCM)

配置构建环境

更多的Jenkins使用方法,在后续文章中提供。

发布了619 篇原创文章 · 获赞 185 · 访问量 66万+

猜你喜欢

转载自blog.csdn.net/seagal890/article/details/100622997