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平台
Jenkins 介绍的更多相关文章
- jenkins介绍和安装
1.jenkins介绍 1.1 Jenkins概念: • Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台. • 这是一个免费的源代码,可以处理任何类型的构建或持 ...
- 有手就行——Jenkins介绍 及 Gitlab代码托管服务器安装
Jenkins 介绍 及 Gitlab代码托管服务器安装 Gitlab安装 源码上传到Gitlab仓库 Jenkins介绍 Jenkins 是一款流行的开源持续集成(Continuous Integr ...
- Jenkins--持续集成及Jenkins介绍
Jenkins--持续集成及Jenkins介绍 目录 Jenkins--持续集成及Jenkins介绍 一.持续集成及Jenkins介绍 1. 软件开发生命周期 1.1 需求分析 1.2 设计 1.3 ...
- 【大话QT之十七】Jenkins介绍及安装使用文档(与Git集成)
文章文件夹结构例如以下: 1> Jenkins与Git相关介绍 2> Jenkins部署安装 3> Gitblit部署安装 4> Jenkins与Git集成使用 5> 项 ...
- 持续集成-jenkins介绍与环境搭建
什么是持续集成? 转自:https://blog.csdn.net/tanshizhen119/article/details/80328523 持续集成,俗称CI, 大师Martin Fowler对 ...
- jenkins介绍及其简单操作
一.jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包 ...
- Jenkins介绍和安装及配合GitLab代码自动部署
Jenkins是什么? 基于JAVA的开源的自动化系统平台 加速自动化CI,CD任务及流水线,所有类型的任务:构建,测试,部署等 丰富的插件生态系统支持功能扩展,1400+插件和SCM,测试,通知,报 ...
- Jenkins系列-Jenkins介绍与部署
Jenkins是什么? Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...
- jenkins学习 01 jenkins介绍
jenkins 是一个可扩展的持续集成引擎. 使用Jenkins目的: 持续.自动地构建/测试软件项目. 监控一些定时执行的任务. jenkins拥有的特性: 易于安装,只要jenkins.war部署 ...
- Jenkins介绍-安装-部署...
1.背景 大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成. ...
随机推荐
- buuctf misc wp 02
buuctf misc wp 02 7.LSB 8.乌镇峰会种图 9.rar 10.qr 11.ningen 12.文件中的秘密 13.wireshark 14.镜子里面的世界 15.小明的保险箱 1 ...
- git如何清除远程 __pycahce__ 文件
第一步,清除已经存在的缓存文件 >> git rm -r -f --cached */__pycache__ rm 'common/__pycache__/__init__.cpython ...
- 挑战全网最幽默的Vuex系列教程:第二讲 Vuex旗下的State和Getter
先说两句 上一讲 「Vuex 到底是个什么鬼」,已经完美诠释了 Vuex 的牛逼技能之所在(纯属自嗨).如果把 Vuex 比喻成农药里面的刘备,那就相当于你现在已经知道了刘备他是一个会打枪的力量型英雄 ...
- 提高万恶的KPI,切忌要避开这六个低效的编程习惯
作者:程序员小跃 Slogan:当你的才华还无法撑起你的野心时,那应该静下心来好好学习 上次的翻译,引起了很大的反响,大家都想知道自己和高级工程师的差距,看了我的文章,是不是都在默默地做着比较呢?如果 ...
- D - Leading and Trailing LightOJ - 1282
题解:求n^k的前三位和后三位. 后三位直接快速幂对1000去余就可以了.前三位可以转换成浮点数来操作,也是用快速幂,我们只保留答案的前三位,当前值大于1000.0的话就除以10,直到结果小于等于10 ...
- 4.JS跳转路由/刷新/返回页面
1.JS跳转路由(需要拿到父组件的history) clickHandle(){ let history = this.props.history; history.push( '/home') } ...
- Python 类学习的一些Tips
这里不详细介绍类,只总结一些小萌新在学习python 类时会有的一些疑点. 类的私有性 在python中,属性和方法的访问权限只有两种,公开的,和私有的.在给属性命名时用两个“__”下划线作为开头,就 ...
- 最全的 API 接口集合
对于程序员来说,为自己的程序选择一些合适的API并不是那么简单,有时候还会把你搞得够呛,今天猿妹要和大家分享一个开源项目,这个项目汇集了各种开发的api,涵盖了音乐.新闻.书籍.日历等,无论你是从事W ...
- 利用 PhpQuery 随机爬取妹子图
前言 运行下面的代码会随机得到妹子图的一张图片,代码中的phpQuery可以在这里下载:phpQuery-0.9.5.386.zip <?php require 'phpQuery.php'; ...
- tensorflow1.0 矩阵相乘
import tensorflow as tf matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf ...