转自百度文库文章,适当修改自:http://wenku.baidu.com/link?url=aexRXQ822IapdnQ2j3zaqfQj611d_XXihumaYx0qCOiEsGUkl0t7p5zrXSHuuQInz4xnSQLGDnaO6R76ADAYmV2rzXY0QqoR9Py4JSDOElW
对Jenkins的认识
Jenkins的是什么
Jenkins是一个可持续化的集成引擎,功能实用
主要用于:
1. 持续、自动地构建/测试软件项目。
2. 监控一些定时执行的任务。
Jenkins拥有的特性包括:
1. 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
2. 易于配置-所有配置都是通过其提供的web界面实现。 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
3. 生成JUnit/TestNG测试报告。
4. 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
5. 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
6. 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
Jenkins的应用
Jenkins在企业应用中比较广泛,企业常用CI系统对自己的项目进行构建和测试,来减少开发的时间和精力,而jenkins就是这样的一个ci系统,用于对自己项目的构建和测试。
1.软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
2.构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力。
3.构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
4.生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户
使用。
部署一个 CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。
CI系统各部分的作用:
1.开发者检入代码到源代码仓库。
2.CI 系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
3.CI 系统会在对应的工作区内执行构建过程。
4.(配置如果存在)构建完成后,CI 系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
5.(配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用
服务器)或存储为软件仓库中的一个新版本。软件仓库可以是 CI 系统的一部分,也
可以是一个外部的仓库,诸如一个文件服务器或者像 Java.net、 SourceForge 之类的
网站。
6.CI 系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些
构建好的构件。
Jenkins 就是这么一个 CI 系统。之前叫做 Hudson。
以下是使用 Jenkins 的一些理由:
1.是所有 CI产品中在安装和配置上最简单的。
2.基于 Web访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了 AJAX
的即时反馈。
3.Jenkins是基于 Java开发的(如果你是一个 Java开发人员,这是非常有用的),但
它不仅限于构建基于 Java的软件。
Jenkins拥有大量的插件。这些插件极大的扩展了 Jenkins的功能;它们都是开源
的,而且它们可以直接通过 web界面来进行安装与管理。
Jenkins的目标
Jenkins 的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相
关人员省时省力提高开发效率。
CI 系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,
它将运行构建的任务委托给构建过程本身。如果构建失败了,那么 CI 系统将通知相关人员,
然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。
特别是它具有以下优点:
1.Jenkins一切配置都可以在 web界面上完成。有些配置如 MAVEN_HOME和 Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改 XML进行配置。
2.支持 Maven的模块(Module),Jenkins对 Maven做了优化,因此它能自动识别 Module,
每个 Module可以配置成一个 job。相当灵活。
3.测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他 CI,
这几乎是件不可能完成的任务。
4.构件指纹(artifactfingerprint),每次 build的结果构件都被很好的自动管理,无需
任何配置就可以方便的浏览下载。