接下来的几篇博文小编将和大家一起探讨学习jenkins的基础知识以及相关应用,本篇博文,我们将一起走进jenkins。
是什么?
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成(Continuous Integration,简称CI)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。也就是我们可以让jenkins帮助我们自动编译、分发、部署和测试等,我们需要完成的工作就是完成基本的环境配置、构建配置等。
jenkins特点:
1. 易使用,用户界面简单,直观,增加了视觉上的吸引力,易开始操作使用。
2. 扩展性好,能够灵活和方便的迎合用户的想法。每周都会有很多新的插件可供使用,范围涉及到版本控制、构建工具、代码质量度量、构建通知、外部系统集成、用户界面定制化等。
3.其开源社区的规模大,活跃度高。
用在哪?
1. 开发
(1)持续集成:
- 任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
- 保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
- 频繁的将代码集成到主干(优点:及时发现错误,防止分支大幅度偏离主干)
<总之,CI是一个能监控版本控制系统变化的工具,无论任何时候,只要监测到有变化,就会自动编译和测试应用程序。如果出现问题,会马上通知开发人员。>
(2)每日构建:强调完全自动化的、可重复的创建过程,其中包括每天运行多次的自动化测试。
2. 测试——自动化/持续部署
怎么实现?
转载自:
CI系统的基本结构:
图解:
1.开发者检入代码到源代码仓库。
2.CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
3.CI系统会在对应的工作区内执行构建过程。
4.(配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
5.(配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
6.CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
构建系统的组成:自动构建过程+代码存储库(版本控制软件)+持续集成服务器
Hudson VS Jenkins
1.历史
时间(年) | 大事件 |
2004 | Hudson由Sun公司启动 |
2005 | 第一个版本在java.net发布 |
2007 | Hudson逐渐取代CruiseControl和其他的开源构建工具的地位 |
2008 | javaOne大会上,Hudson获得Duke's Choice Award |
2010 | Oracle对Sun的收购带来了Hudson的所有权问题 |
2011 | 将项目名称从“Hudson”改为“Jenkins”;甲骨文继续开发Hudson,Jenkins和Hudson成为两个独立的项目 |
2013 | GitHub上的Jenkins拥有567个项目成员和约1,100个公共仓库;Hudson有32个项目成员和17个公共仓库 |
2. 关系:Hudson是Jenkins的前身(开发团队和项目管理不变)
3. 比较?
(1)Hudson的绝大部分开发者转向Jenkins开发,包括创始人Kohsuke Kawaguchi,因此Jenkins的技术优势更为明显
(2)Jenkins支持超过1000个插件,多样而强大的插件让Jenkins更加强大
(3)Jenkins开发社区的管理十分开放,有利于Jenkins的可持续发展