zoukankan      html  css  js  c++  java
  • Jenkins 介绍

    持续集成:

    持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    一、引入持续集成测试:

    当前软件开发过程存在的问题

    在没有应用持续集成之前,传统的开发模式是这样的:

    项目一开始是先划分好模块,分配模块给相应的开发人员;

    开发人员开发好一个模块就进行单元测试;

    等所有的模块都开发完成之后,由项目经理对所有代码进行集成;

    集成后的项目由项目经理部署到测试服务器上,被交由测试人员进行集成测试;

    测试过程中出现 Bug 就提把问题记录进行 Bug 列表中;

    项目经理分配 Bug 给相应的责任人进行修改;

    修改完成后,项目经理再次对项目进行集成,并部署到测试服务器上;

    测试人员在下一次的集成测试中进行回归测试;

    通过通过之后就部署到生产环境中;

    如果测试不通过,则重复上述“分配 Bug -> 修改 Bug -> 集成代码 -> 部署到测试服务器上 -> 集成测试”工作。

    这个过程中可能会出现如下问题:

    1. Bug 总是在最后才发现

    随着软件技术的发展,软件规模也在扩大,软件需求越来越复杂,软件已经不能简单地通过划分模块的方式来开发,往往需要在项目内部互相合作,模块之间存在一定的依赖关系,那么早期就存在的 Bug 往往会在最后集成的时候才被发现。

    2. 越到项目后期,问题越难解决

    很多开发者需要在集成阶段花费大量的时间来寻找 Bug 的根源,加上软件的复杂性,问题的根源很难定位。而且我们都清楚,间隔的时间越久,Bug 修复的成本越高,因为连开发人员自己都忘了当初写得是什么鬼代码,从而不得不从头阅读代码、理解代码。

    3. 软件交付时机无法保障

    正是因为我们无法及时修复 Bug,或者是没能在早期就修复 Bug,从而令整个修复 Bug 的周期拉长了。不管怎么样,我们不可能把明知存在 Bug 的软件交付给客户。

    而且,大量没有在前期预估到的工作量产生了——开发人员不得不花费大把时间在查找 Bug 上;测试人员不断的需要进行回归测试;项目经理不得不疲命于该死的代码的集成、部署这些重复性工作——最终导致整个项目的周期拉长,交付时间点往后拖。

    4. 程序经常需要变更

    某些项目,程序会经常需要变更,特别是敏捷开发的实践者。由于产品经理在与客户交流过程中,往往实际的软件就是最好的原型,所以软件会被当作原型作为跟客户交流的工具。当然,客户最希望的当然是客户的想法能够马上反映到原型上,这会导致程序会经常被修改的。那么也就意味着“分配 Bug -> 修改 Bug -> 集成代码 -> 部署到测试服务器上 -> 集成测试”工作无形又爆增了。

    5. 无效的等待变多

    有可能开发在等集成其他人的模块;测试人员在等待开发人员修复 Bug;产品经理在等待新版本上线好给客户做演示;项目经理在等待其他人提交代码。不管怎么样,等待意味低效。

    6. 用户的满足度低

    这里的用户是广义的,可以指最终的客户,也可以是产品经理、公司领导、测试人员,甚至可能是开发人员自己。你想想看,本来三个月做完的项目被拉长到了九个月甚至一年,用户能满意吗!产品经理、公司领导经常需要拿项目作为演示的原型,结果告诉我在演示前一刻发现还有很多 Bug 没有解决,项目启动不了无法访问,这叫人情何以堪。

    持续集成、持续集成服务器的概念

    那么好了,在上面论述的这些问题中,我们发现有些工作是无法避免的,比如测试工作、修改程序、集成工作、部署工作。但其实在整个工作流程上,是存在可以优化的空间的,比如,集成测试的工作是否可以提前做?可否有自动化的手段来代替测试、集成、部署工作?围绕这些,软件行业的大师们提出“持续集成”口号。

    一般就是按照自己项目的实际需要来设置一定的频率,少则可能几次,多则可能达几十次。可以设置按照代码的变更来触发集成,或者设置一个固定时间周期来集成,也可以手工点击集成的按钮来“一键集成”。

    持续集成的优点

    1.统一的代码库

    2.自动构建

    3.自动测试

    4.每个人每天都要向代码库主干提交代码

    5.每次代码递交后都会在持续集成服务器上触发一次构建

    6.保证快速构建

    7.模拟生产环境的自动测试

    8.每个人都可以很容易的获取最新可执行的应用程序

    9.每个人都清楚正在发生的状况

    10.自动化的部署

    用什么来实现集成?

    Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

    什么是jenkins

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能

    jenkins的功能?

    1、软件的持续构建和测试

    2、监视job的执行

    3、项目源代码修改的检测

    4、分布式构建

    节点配置:(代理服务器)

    jenkins安装在一台机器,所有的jobs都在这台机器上运行,如果超过太多jobs去运行,会形成等待,节点存在就是解决这个问题提高效率,安装jenkins的机器称为master机,而其它机器就属于master的分支,成为slave;而要利用其它机器用执行jenkins的jobs,则需要一些配置,形成两台机器互通,当然下面的例子你用本机当做slave也是可以的。节点可以理解为一个代理,一台服务器。Jenkins是一个ci(持续集成)平台,每个代理服务器要与jenkins进行集成,需要执行java -jar ,后面是代理服务器Ip地址,通过这条命令,执行成功说明代理已集成在ci平台

  • 相关阅读:
    Redis的探究
    白话插件框架原理
    Jquery文本框值改变事件兼容性
    HDU多校练习第一场4608——I_Number
    0-创建scott数据
    句柄和指针
    openssl编译(VC6.0)
    CrashRpt_v.1.4.2_vs2008_also_ok
    文件转换dll mingw
    qt windows分发工具使用(windoployqt)
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/11693646.html
Copyright © 2011-2022 走看看