Jenkins是什么?
Posted 软件测试大师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins是什么?相关的知识,希望对你有一定的参考价值。
Jenkins 是一个可扩展的持续集成引擎。
主要用于:
持续、自动地构建/测试软件项目。监控一些定时执行的任务。
Jenkins 拥有的特性包括:
易于安装-只要把 jenkins.war 部署到 servlet 容器,不需要数据库支持。易于配置-所有配置都是通过其提供的 web 界面实现。
集成 RSS/E-mail 通过 RSS 发布构建结果或当构建完成时通过 e-mail 通知。生成 JUnit/TestNG 测试报告。
分布式构建支持 Jenkins 能够让多台计算机一起构建/测试。
文件识别:Jenkins 能够跟踪哪次构建生成哪些 jar,哪次构建使用哪个版本的 jar 等。插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
一、Jenkins 的由来
目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的开发团队应对如下挑战:
软件构建自动化 :配置完成后,CI 系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
构建可持续的自动化检查 :CI 系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI 系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。
部署一个 CI 系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。
下图概括了 CI 系统的基本结构:
该系统的各个组成部分是按如下顺序来发挥作用的:
1. 开发者检入代码到源代码仓库。
2. CI 系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
3. CI 系统会在对应的工作区内执行构建过程。
5. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务
器)或存储为软件仓库中的一个新版本。软件仓库可以是 CI 系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像 Java.net、 SourceForge 之类的网站。
6. CI 系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
Jenkins 就是这么一个 CI 系统。之前叫做 Hudson。
以下是使用 Jenkins 的一些理由:
是所有 CI 产品中在安装和配置上最简单的。
基于 Web 访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了 AJAX 的即时反馈。
Jenkins 是基于 Java 开发的(如果你是一个 Java 开发人员,这是非常有用的),但它不仅限于构建基于 Java 的软件。
Jenkins 拥有大量的插件。这些插件极大的扩展了 Jenkins 的功能;它们都是开源的,而且它们可以直接通过 web 界面来进行安装与管理。
二、 Jenkins 的目标
Jenkins 的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。
CI 系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么 CI 系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。
特别是它具有以下优点:
支持 Maven 的模块(Module),Jenkins 对 Maven 做了优化,因此它能自动识别 Module,每个Module 可以配置成一个 job。相当灵活。
测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他 CI,这几乎是件不可能完成的任务。
构件指纹(artifact fingerprint),每次 build 的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。
三、Jenkins 的主要特点
* 容易安装,只需要执行 Java -jar jenkins.war, 或者直接部署到一个 servlet container 中,例如 tomcat。不需要安装,不需要数据库的支持。
* 容易配置,jenkins 可以完全地通过友好的 web GUI 来配置,且配置页面支持配置项的错误检查和很好的在线帮助。不需要手动地编辑 xml 的配置文件,但是 jenkins 也支持手动修改 xml 配置文件。
* 项目源码修改的检测,jenkins 能够从项目的 Subversion/CVS 生成最近修改的集合列表,且改方式非常有效,不会增加 Subversion/CVS Repository 的负载。
* 可读的永久的链接生成,jenkins 对于大部分 pages 都生成清楚的可读的永久的链接,例如''latest build"/"latest successful build", 因此可以容易地在其他的地方引用 jenkins 的生成的pages。
* RSS/EMail/IM 集成,可以通过 RSS,EMail 或 IM 来实时地监视 build 的失败。
* Build 完成后仍然可以 tag,支持在 build 完成后 tag 或重 tag。
* Junit/TestNG 测试报告,能够很好地显示各种测试的报告,且可以生成失败的趋向图。
* 分布式 build,jenkins 能够分发 build/test 的负载到多台机器,能够更好地利用硬件资源,提高 build 的时间。
* 文件标识,jenkins 可以标识 build 产生的文件,例如 jars。
* 插件支持,jenkins 可以通过第三方的插件来扩展。
* 跨平台,支持几乎所有的平台,例如 Windows,Ubuntu/Debian,Red Hat/Fedora/CentOS,MacOSX,openSUSE,FreeBSD,OpenBSD,Solaris/OpenIndiana.Gentoo。
想要了解更多,参加自动化测试沙龙?
以上是关于Jenkins是什么?的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins入门系列之——01第一章 Jenkins是什么?