最近在做一个自动化发布系统,当中涉及到gerrit,jenkins,node节点(build 和执行脚本),最后再将系统签名和各种包cpoy到FS系统。开始学习Jenkins,了解了一下其功能和结构以及完成的作业。 以下为转载的他人博客内容。

1 、what is jenkins?

Jenkins 是一个可扩展的持续集成引擎。它是Continous Integration Server,是Hadson的继续。

类似的产品还有: CruiseControl,BuildBot,TeamCity,BuildForge, ElectricCommander等

http://jenkins-ci.org (jenkins官网)

https://www.cloudbees.com/

Jenkins的突出特点:

开源免费;

跨平台,支持所有的平台;

master/slave支持分布式的build;

web形式的可视化的管理页面;

安装配置超级简单;

tips及时快速的帮助;

已有的200多个插件;

2、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 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

2.1、Jenkins的由来及在CI结构中的作用

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

  • l 软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
  • l 构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
  • l 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
  • l 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。

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

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

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

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

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

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

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

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

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

Jenkins就是这么一个CI系统。之前叫做Hudson。

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

  • l 是所有CI产品中在安装和配置上最简单的。
  • l 基于Web访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了AJAX的即时反馈。
  • l Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。
  • l Jenkins拥有大量的插件。这些插件极大的扩展了Jenkins的功能;它们都是开源的,而且它们可以直接通过web界面来进行安装与管理。

2.2、Jenkins的目标

Jenkins的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。

CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。

特别是它具有以下优点:

  • l Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
  • l 支持Maven的模块(Module),Jenkins对Maven做了优化,因此它能自动识别Module,每个Module可以配置成一个job。相当灵活。
  • l 测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI,这几乎是件不可能完成的任务。
  • l 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。

转自:http://www.cnblogs.com/zz0412/p/jenkins01.html

http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html

Jenkins--CIServer的介绍相关推荐

  1. jenkins持续集成介绍及安装部署

    目录 一,jekins介绍 1,什么是jekins? 2,jekins可以为我们解决什么问题? 3,什么是持续集成? 4, 持续集成的操作流程 二,jenkins部署 1,jenkins基本配置部署( ...

  2. 持续集成平台Jenkins配置方法介绍

    持续集成(Continuous integration,CI)是软件开发和发布流程中最重要的组成部分,有利于加快开发进度.Jenkins是常用的持续集成管理工具,本文将简要介绍Jenkins持续集成工 ...

  3. 【我的Android进阶之旅】 Android Studio插件之Jenkins插件介绍

    一Jenkins插件功能介绍 1Jenkins任务列表 2切换Jenkins分组 3构建Jenkins任务 4进入构建Jenkins任务的页面 5进入最后一次构建Jenkins任务的页面 6增加Jen ...

  4. 持续集成:Jenkins邮件通知配置方法介绍

    Jenkins的邮件提醒功能主要通过Email Extension插件来实现,它是对Mailer Plugin的扩展,我在持续集成平台Jenkins配置方法介绍中简要介绍了Jenkins的邮件配置方法 ...

  5. Jenkins安全插件——Arachni扫描器介绍

    新钛云服已为您服务898天 Jenkins安全类插件介绍 Jenkins是一款跨平台的持续集成和持续交付.基于Java开发的开源软件,提供任务构建.持续集成监控等功能,可帮助开发测试人员更方便的构建软 ...

  6. Pytest - 使用介绍

    1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...

  7. 某小型公司持续集成工具 jenkins 实践

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:邵磊 juejin.im/post/599fd5d15188 ...

  8. 自动化部署之jenkins

    一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...

  9. android studio 设置自动编译_某小型公司持续集成工具jenkins实践(JAVA WEB、Android、IOS、html)...

    作者:邵磊链接:https://urlify.cn/qIB7fq # 前言 本文可能是网上最全的一篇全端jenkins部署解决方案介绍的文章,一直以来,领导都想解决代码提交和打包问题,尤其是小公司,打 ...

  10. linux 搭建jenkins

    一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...

最新文章

  1. 2月第4周中国五大顶级域名总量减1.8万 美国增10.8万
  2. jQuery的事件方法
  3. java中解决脏读_多线程出现脏读以及解决方法(使用synchronized)
  4. 二级java题型及分值_2016年全国计算机二级java语言程序设计考试大纲
  5. sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁
  6. oracle instr查询字符串
  7. LeetCode 459. Repeated Substring Pattern
  8. PHP_TP5框架开发后端接口(代码编写思路)
  9. java互喷群,夸夸群和喷喷群的心里需求和投资如此相似
  10. 1022. D进制的A+B (20)-PAT乙级真题
  11. okhttp教程——起步篇
  12. 博文视点大讲堂第36期——让Oracle跑得更快(3大oracle ACE联合推荐)
  13. ffmpeg1.2的filter分析
  14. A-GPS学习笔记(二) 之SUPL
  15. 永磁同步电机MTPA与id=0的控制原理
  16. ShadowGun 体积光学习
  17. 小米 2015 北京 研发面试
  18. 手机ROM,RAM作假显示
  19. php里用钢笔画曲线,ps钢笔工具怎么抠图
  20. 【LOJ2863】「IOI2018」组合动作

热门文章

  1. Arduino 项目笔记 | 基于 Arduino 单片机的 A4988 和 L298N电机驱动模块实验记录
  2. MySQL六十六问——面试复习必备
  3. #创新应用#图钉:记录人生的足迹
  4. 【SVA学习】01. 什么是断言(SVA)?
  5. argparse简化版图片教程
  6. wi-fi_Google语音正在测试Wi-Fi呼叫,无需呼叫转移
  7. 阿里 postgresql mysql_如何将PostgreSQL与MySQL相结合,实现1+12的组合拳?(下)-阿里云开发者社区...
  8. MySQL数据类型 int(M) 表示什么意思?
  9. 图像上色 (Image-Colorization) 项目
  10. 利用Solidworks Motion将带有质量信息和关节约束的三维模型导入ADAMS