持续集成工具 Jenkins

1 从装修厨房看项目开发效率优化

1.1 持续部署

 装修厨房
全部装好之后发现灯不亮,电路有问题;冷热水装反了,管路有问题。这些问
题要解决就必须把地砖、墙砖拆掉——一个环节有问题,其他环节跟着返工
那怎么做会好一些呢?
任何安装完成及时测试,确保其可以正常工作。
 项目开发
开发过程中进行单元测试能够通过,但是部署到服务器上运行出现问题。
那怎么做会好一些呢?
仅仅单元测试还不够,各个模块都必须能够在服务器上运行。
 关注点
持续部署的关注点在于项目功能部署至服务器后可以运行,为下一步测试环节
或最终用户正式使用做好准备。

1.2 持续集成

 装修厨房
装修厨房时我们需要铺地砖,如果把所有地砖都切好再拿去铺就会发现:每一
块地砖单独看都是好的,但是实际铺的时候,把所有地砖整合起来,发现和厨房
地面总体尺寸不匹配,边边角角的地砖需要重新切,时间和物料成本陡然升高。
那怎么做会好一些呢?
切一块铺一块,根据需要的尺寸来切,尽早发现尺寸变化,避免返工。
 项目开发
各个小组分别负责各个具体模块开发,本模块独立测试虽然能够通过,但是上
线前夕将所有模块整合到一起集成测试却发现很多问题,想要解决就需要把很多代
码返工重写而且仍然有可能有问题,但现在时间很可能不够了。
那怎么做会好一些呢?
经常性、频繁的把所有模块集成在一起进行测试,有问题尽早发现,这就是持
续集成。
 关注点
持续集成的关注点在于尽早发现项目整体运行问题,尽早解决。

1.3 持续交付

 装修厨房
全部装修好之后房屋主人来验收,各项功能都正常,但是水龙头的样式主人不 喜欢,灶台的位置主人不满意,要求返工。
那怎么做会好一些呢?
房屋主人随时查看装修进度,施工团队及时调整。
 项目开发
项目的各个升级版本之间间隔时间太长,对用户反馈感知迟钝,无法精确改善
用户体验,用户流失严重。
那怎么做会好一些呢?
小版本不断进行快速迭代,不断收集用户反馈信息,用最快的速度改进优化。
 关注点
持续交付的关注点在于研发团队的最新代码能够尽快让最终用户体验到。

1.4 总体目标

 好处 1:降低风险

一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件
的健康状况,减少假定。

 好处 2:减少重复过程

产生重复过程有两个方面的原因,一个是编译、测试、打包、部署等等固定操
作都必须要做,无法省略任何一个环节;另一个是一个缺陷如果没有及时发现,有
可能导致后续代码的开发方向是错误的,要修复问题需要重新编写受影响的所有代
码。
而使用 Jenkins 等持续集成工具既可以把构建环节从手动完成转换为自动化完
成,又可以通过增加集成频次尽早发现缺陷避免方向性错误。

 好处 3:任何时间、任何地点生成可部署的软件

持续集成可以让您在任何时间发布可以部署的软件。从外界来看,这是持续集
成最明显的好处,我们可以对改进软件品质和减少风险说起来滔滔不绝,但对于客
户来说,可以部署的软件产品是最实际的资产。利用持续集成,您可以经常对源代
码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成
员马上就会被通知到,问题会第一时间被修复。不采用持续集成的情况下,这些问
题有可能到交付前的集成测试的时候才发现,有可能会导致延迟发布产品,而在急
于修复这些缺陷的时候又有可能引入新的缺陷,最终可能导致项目失败。

 好处 4:增强项目的可见性

持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数
据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。通常,项目成员
通过手工收集这些信息,增加了负担,也很耗时。持续集成可以带来两点积极效果:
(1)有效决策:持续集成系统为项目构建状态和品质指标提供了及时的信息,
有些持续集成系统可以报告功能完成度和缺陷率。
(2)注意到趋势:由于经常集成,我们可以看到一些趋势,如构建成功或失败、
总体品质以及其它的项目信息。

 好处 5:建立团队对开发产品的信心

持续集成可以建立开发团队对开发产品的信心,因为他们清楚的知道每一次构
建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。

2 持续集成工具

2.1 Jenkins 和 Hudson

目前最流行的一款持续集成及自动化部署工具。
Jenkins 和 Hundson 之间的关系:2009 年,甲骨文收购了 Sun 并继承了 Hudson 代
码库。在 2011 年年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的
项目:
 Jenkins:由大部分原始开发人员组成
 Hudson:由甲骨文公司继续管理
所以 Jenkins 和 Hudson 是两款非常相似的产品。

2.2 技术组合

Jenkins 可以整合 GitHub 或 Subversion
Husband 也可以整合 GitHub 或 Subversion
二者既然是同源的工具软件,操作和指导思想就是接近的,所以本教程通过 Jenkins
为大家呈现。

3 JavaEE 项目部署方式对比

3.1 手动部署

微信截图_20190606164756.png

3.2 自动化部署

“自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户
或测试人员使用的马上就是最新的应用程序。


微信截图_20190606164923.png

搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。
对于程序员的日常开发来说不会造成任何额外负担——自己把代码提交上去之后,服务
器上运行的马上就是最新版本——一切都发生在无形中。
下面我们讲带领大家一步一步搭建整套持续集成环境,这个操作过程只需要细心认
真即可,没有任何难度。但是需要优秀的你具备以下前置知识:
 Linux 基本操作命令和 VIM 编辑器使用
 Maven 的项目构建管理
 GitHub 或 SVN 使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • jenkins是一个用Java编写的开源自动化服务器,它是Hudson的一个分支project ; 它是一个持续集...
    _palm阅读 10,499评论 0 16
  • 转载请注明出处,感谢您的支持。文章来源:【chenyk的简书】http://www.jianshu.com/p/f...
    chenyk阅读 5,778评论 0 4
  • Jenkins是一个流行的持续集成框架,可以在我们提交项目的时候自动测试、运行和部署项目。虽然Jenkins使用J...
    乐百川阅读 440评论 0 1
  • A:社会背景是一种无形的背景,在在潜移默化的影响着我们的行为。“社会大猩猩” M1:惊讶,社会背景居然能左右我们的...
    笨笨ym阅读 116评论 0 0
  • 一路有你真好 人生弯弯曲曲水,世事重重叠叠山。生活中,坎坷与荆棘遍地;同学间,纯洁又真...
    绿潮阅读 363评论 0 0