>[danger] # Jenkins简介
Jenkins简介
Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降:持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。。
使用Maven(Ant)等来实现lava项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。
1、简介
Jenkins是一个用Java编写的开源的持续集成工具。官方网站:https://jenkins.io/
Jenkins能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能用图表的形式,形象地展示项目构建的趋势和稳定性。
2、特点
易安装:仅仅一个jenkins.war,丛官网下载该文件后,直接运行,无需额外的安装,
更无需安装数据库;
易配置:提供友好的GUI配置界面;
变更支持:Jenkins能从代码仓库(SVN/Git)中获取并产生代码更新列表,并输出到编译输出信息中;
支持永久链接:用户是通过Web来访问Jenkins的,而这些Web页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;
集成E-Mail/RSS/M:当完成一次集成时,可通过这些工具实时收取集成结果(构建-次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
JUnit/TestING测试报告:也就是用以图表等形式提供详细的测试报表功能;
支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
文件指纹信息:Jenkins会保存构建集成所产生的jars文件、集成构建使用了哪个版;
支持第三方插件:Jenkins支持第三方插件,这使得Jenkins功能变得越来越强大;
3、持续集成(CI)
含义:频繁的(一天多次的)将所有开发者的工作合并到主干上。
持续集成的核心在于确保新增的代码能够与原先代码正确的集成。与后续要介绍的持续交付以及持续部署,其最主要的差别也就在于其目标不同。
不过持续集成的流程还存在一定的异议:上图所示的流程为 Build -> Test,在阮老师的教程里头是 Test -> Build。不过,持续集成本身只不过是一种软件工程的方法或者策略,其并不规定具体的实现。在实际的应用中,还是需要结合具体的开发语言或者工具来定。
持续集成的优势
易于定位错误:每一次的代码集成都需要执行相关的测试工作,持续集成频繁的集成次数天然的将复杂的代码逻辑切割为了小块,也就使得每一次测试中遇到的错误能够更加容易的被定位;
易于控制开发流程:更为细致的工作提交也就意味着更容易判断当前的工作进度,这对于管理者规划开发流程而言提供了一个有效的参考,同时也为开发人员省下了汇报工作的时间;
易于减少不必要的工作:build 以及 test 过程的自动化可以为你节约一大票的时间,从而投入到有价值的工作中去
4、持续交付(CD)
持续交付 指的是:一种能够使得软件在较短的循环中可靠的发布的软件工程方法。
与持续集成相比,持续交付的侧重点在于 交付,其核心对象不在于代码,而在于可交付的产物。由于持续集成仅仅针对于新旧代码的集成过程执行了一定的测试,其变动到持续交付后还需要一些额外的流程。
5、持续部署(CD)
持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。
6、Maven介绍
Maven项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目。
由于Maven的面向项目的方法,许多Apache Jakarta项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长。
7、传统网站部署流程
在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确认上线->备份数据->外网更新->外网测试->发布完成。如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码;如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。
![](https://img.kancloud.cn/2e/ec/2eece86fac884a2ce38e353c86a81b7d_871x441.png)
手动上线步骤:
开发人员发起代码上线的需求(邮件中包含开发做好的WAR包)-)运维人员连接线上负载调度器(Nginx)-->隔离一组服务器(Tomcat)-->连接服务器(Tomcat)-->备份旧代码(tar打包)-->删除旧代码目录-->上传新的WAR包-->外网测试-->测试不通过则通过备份回滚代码-->测试通过则利用rsync的脚本推送代码到其他服务器-->统一外网测试->连接调度器恢复隔离机制-->隔离另一组服务器实施上线步骤-->上线完成。
8、目前主流网站部署流程
通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVI、Git仓库即可。
运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。
测试人员:可以通过Jenkins进行简单的代码及网站测试
![](https://img.kancloud.cn/b0/67/b067d611a594d8dbad4da8baabf0f648_853x353.png)
9、Jenkins的工作原理
是先将源代码从SVN/Git版本控制系统中拷贝一份到本地,然后根据设置的脚本进行build(构建)。整个系统的关键就是build脚本,build脚本告诉Jenkins在一次集成中需要执行的任务。
>[danger] ## Windows环境中安装Jenkins
在最简单的情况下,Jenkins 只需要两个步骤:
1、下载最新的版本(一个 WAR 文件)。Jenkins官方网址: [http://Jenkins-ci.org/](http://jenkins-ci.org/)
2、命运行运行 java -jar jenkins.war (默认情况下端口是8080,如果要使用其他端口启动,可以通过命令行”java –jar Jenkins.war --httpPort=80”的方式修改)
注意:Jenkins 需要运行 Java 5以及以上的版本,老版本是war包新版本是msi如果是war包按照上述步骤安装即可,msi直接双击安装。
还有一种安装方式就是将下载的war包文件部署到 servlet 容器,然后启动容器,在浏览器的URL地址栏中输入类似[http://localhost:8080/jenkins/](http://localhost:8088/hudson/)这样的地址即可。下图是安装成功后的界面(使用的是Linux+Tomcat6+Java6环境):
![](https://img.kancloud.cn/66/a5/66a52a10807d9f86347aff824a577939_1400x523.jpg)
>[danger]## Jenkins配置
在配置前的一些话:Jenkins的配置不可能全部都说到的,大部分配置是有英文说明的,点击输入框后面的问号就可以看见了。英文不会用翻译工具,多测试几次,你就懂了。
## 2.1 系统管理
在已运行的Jenkins主页中,点击左侧的系统管理进入如下界面:
![](https://img.kancloud.cn/11/f5/11f5ff2d1a45a0750c384743599ebfb5_555x416.png)
### 2.1.1 提示信息
Ps:版本不同提示的消息有可能不同
### 2.1.1.1 Utf-8编码
Your container doesn't use UTF-8 to decode URLs. If you use non-ASCII characters as a job name etc, this will cause problems. See [Containers](http://wiki.jenkins-ci.org/display/JENKINS/Containers) and [Tomcat i18n](http://wiki.jenkins-ci.org/display/JENKINS/Tomcat#Tomcat-i18n) for more details.
Jenkins建议在tomcat中使用utf-8编码,配置tomcat下conf目录的server.xml文件
![](https://images0.cnblogs.com/blog/529896/201308/12163628-5e18c80f1c44409fb584a8a618299e12.png)
Ps:如果Job的控制台中文输出乱码,请将URIEncoding=”utf-8”更改为useBodyEncodingForURI="true"
### 2.1.1.2 新的版本
New version of Jenkins (1.518.JENKINS-14362-jzlib) is available for download (changelog).
提示有新的版本可以下载了,喜欢更新的点击download去下载吧!
### 2.1.1.3 安全设置
![](https://img.kancloud.cn/2f/b0/2fb066058fc689540ad27d5c2991e3f8_789x33.png)
詹金斯允许网络上的任何人代表您启动进程。考虑至少启用身份验证来阻止滥用。点击Dismiss忽略该消息,点击Setup Security进入设置界面.详细设置请参考 Configure Global Security(安全设置) 章节
### 2.1.2 系统设置
在已运行的Jenkins主页中,点击左侧的系统管理—>系统设置进入如下界面:
![](https://img.kancloud.cn/a1/93/a19336ea1c67e65eeaffcca04c3752d9_1399x726.jpg)
ps:jenkins的根目录,默认地在C:\\Documents and Settings\\AAA\\.hudson。
### 2.1.2.1 JDK、Maven、Ant配置(图为Windows环境)
配置一个JDK、Ant、Maven实例,请在每一节下面单击Add(新增) 按钮,这里将添加实例的名称和绝对地址。下图描述了这两个部分。
![](https://img.kancloud.cn/11/74/11741d84ed3839bbd463f8f48e3ca726_1021x218.jpg)
点击“安装”,添加相应的设置,如下图:
![](https://img.kancloud.cn/13/80/138036173aefd54a4a5092bda6e7b6f1_1043x558.jpg)
JDK别名:给你看的,随便你自己
JAVA\_HOME:这个是本机JDK的安装路径(错误的路径会有红字提示你的)
自动安装:不推荐这个选项
注:Ant、Maven的配置是一样的(JDK去oracle官网下载,Ant与Maven去apache官网下载)
Ps:每个文本框后面都有个问号,点击问号就会出现帮助信息
### 2.1.2.2 邮件通知配置(默认)
#### 2.1.2.2.1 配置发件人地址
![](https://img.kancloud.cn/57/96/5796a4083ca55e337c4ac4708d265f3a_1018x125.jpg)
系统管理员邮件地址(System Admin e-mail address):Jenkins邮件发送地址,切记,必须设置。
#### 2.1.2.2.2 配置邮件通知
![](https://img.kancloud.cn/5e/7e/5e7e3830c0ddd198677b6c7b63be1331_1009x405.jpg)
设置:SMTP服务器,勾选"使用SMTP认证",输入用户名与密码
Ps:小技巧:用户默认邮件后缀配置了后,以后你填写邮件地址只需要@之前的就行了
### 2.1.2.3 Subversion配置
![](https://img.kancloud.cn/ed/d4/edd4e7a24fcc36dfdcbfa6c4da795902_995x135.jpg)
Subversion Workspace Version:Subversion 的版本号,选择你对应的版本号就行了
### 2.1.3 Configure Global Security(安全设置)
在已运行的Jenkins主页中,点击左侧的系统管理—>Configure Global Security进入如下界面:
![](https://img.kancloud.cn/f9/56/f956f70d011ca415f8ebac09c21bc41f_1010x531.jpg)
设置如上图,保存后系统管理中就出现管理用户的选项。页面右上角也会出现登录/注册的选项。
此设置:只有登录用户可以做任何事
### 2.1.4 管理用户设置
在右上角点击注册
![](https://img.kancloud.cn/02/9d/029d027e54ac1093c287df6164fd515d_330x227.png)
点击sign up按钮,提示你现在已经登录.返回首页.
登录后和匿名账号看到的首页有几点不同,如下图红框所示:
![](https://img.kancloud.cn/19/d4/19d4371831f0b53c746233d265f058d9_1398x313.jpg)
### 2.1.5 管理插件设置
建议先阅读[Jenkins插件](http://www.cnblogs.com/zz0412/p/jenkins02.html#_Jenkins%E6%8F%92%E4%BB%B6)章节,在回来安装如下所示的插件。
需求:这个插件将生成的构件(war或者ear)部署到主流的服务器上。
插件名称:[Deploy Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Deploy+Plugin)
插件介绍:This plugin takes a war/ear file and deploys that to a running remote application server at the end of a build
## 2.2 项目构建设置
### 2.2.1 构建自由风格的Job
#### 2.2.1.1 新建自由风格构建任务
在已运行的Jenkins主页中,点击左侧的新建Job进入如下界面:
![](https://img.kancloud.cn/3e/b6/3eb6fedc596e9b36436d5154b047a37f_946x322.png)
这时,需要为新的构建任务指定一个名称。(这里输入的任务名称为:Ant\_test)这里有几种的任务类型可供选择,鉴于初步介绍,先选择构建一个自由风格的软件项目。对于其他的类型,经常使用的是拷贝已存在任务;这主要为了能在现有的任务基础上新建任务。点击OK按钮.
**需要注意的是**:
1.Job名称千万不要用中文名称(不作死就不会死)。
2.创建Job名称时最好有个规划,因为我们最后会通过正则匹配自动将Job归类,比如我喜欢 “项目前缀\_一些说明-Job类型”这种方式。
### 2.2.1.2 构建任务配置
### 2.2.1.2.1 源码管理配置
演示是使用Subversion的链接,在Repository URL中输入你的项目链接,如果没有权限则会提示如下图:
![](https://img.kancloud.cn/9b/61/9b615b8395daf022bfdf164af9ed7e92_1003x578.jpg)
设置成功后,就直接从SVN此目录获取文件到本地。Ps:要先添加Credentials。添加的方法如下操作:
点击Jenkins首页左侧Credentials,进入页面
![](https://img.kancloud.cn/f9/66/f966b990ba31b6e24c8cf9724ccf433e_1401x261.jpg)
![](https://img.kancloud.cn/77/ff/77ffb312c08bcd26f27792d9b87c8100_1398x291.jpg)
下一步:一般都是使用的用户名和密码登陆的
![](https://img.kancloud.cn/51/a4/51a42490b540c89fe0386ba713ec3d24_1398x385.jpg)
Ps:svn的用户名和密码设置了是没有办法在web界面修改的。如果要修改则先去Jenkins目录删除hudson.scm.SubversionSCM.xml文件
### 2.2.1.2.2 构建触发器
在其他项目构建完成后才执行构建:指定的项目完成构建后,触发此项目的构建。
Poll SCM :这是CI 系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写0,15,30,45 \* \* \* \*将使Jenkins每隔15分钟就检查一次您源码仓库的变化。
Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。
![](https://img.kancloud.cn/bf/72/bf72ae20bfc863552d7584a7566a3c29_996x282.jpg)
### 2.2.1.2.3 Ant构建配置
因为我的项目是用ant脚本实现的编译和打包,所以我选择的是Invoke Ant,Ant Version选择你Ant配置的那个名字,注意不要选择default喔,那个选择了没有用。
![](https://img.kancloud.cn/71/71/71717f431beeb411736ec8fd7c1135cf_1001x247.jpg)
Ps:如果你的构建脚本build.xml不在workspace根目录、或者说你的构建脚本不叫build.xml。那么需要在高级里设置Build File选项的路径,指明你的脚本。注意:是相对路径
## 2.2 监控
当任务一旦运行,您将会看到这个任务正在队列中的仪表板和当前工作主页上运行。这两种显示如下。
![](https://img.kancloud.cn/4d/98/4d98575caac7383e7e4f2c9929d58d6a_345x125.jpg)
![](https://img.kancloud.cn/4a/03/4a03c0aabc136dd8e92eabf584667288_340x216.jpg)
一旦构建完成后,完成后的任务将会有三个地方进行显示。
你可以在Jenkins的控制面板上看到它,如下图。
![](https://img.kancloud.cn/d1/79/d179e165f61a0c114265d4e8396e9922_1010x106.jpg)
在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代表着“最新构建状态”,W栏目代表着“构建稳定性”。Jenkins使用这两个概念来介绍一个作业的总体状况:
构建状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:
Successful:完成构建,且被认为是稳定的。
Unstable:完成构建,但被认为不稳定。
Failed:构建失败。
Disabled:构建已禁用。
![](https://img.kancloud.cn/72/2a/722a16da06456a9a822188a1b0ee22d7_269x74.jpg)
构建稳定性: 当一个Job中构建已完成并生成了一个未发布的目标构件,如果您准备评估此次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。
![](https://img.kancloud.cn/68/8a/688adc5f8efd36c308affc705bdf937a_212x71.jpg)
你也可以在当前Job主界面上看到它,如下图左下部分
![](https://img.kancloud.cn/b9/cd/b9cd150feb7e1f658c804b830632a7a4_1394x548.jpg)
当前作业主页上还包含了一些有趣的条目。左侧栏的链接主要控制Job的配置、删除作业、构建作业。右边部分的链接指向最新的项目报告和构件。
通过点击构建历史(Build History)中某个具体的构建链接,您就能跳转到Jenkins为这个构建实例而创建的构建主页上。如下图
![](https://img.kancloud.cn/ed/60/ed602861bfa785ce56f1c140b7e8b3fa_1398x314.jpg)
如果你想通过视图输出界面来监控当前任务的进展情况。你可以单击Console Output(控制台输出)。如果工作已完成,这将显示构建脚本产生的静态输出;如果作业仍然在运行中,Jenkins将不断刷新网页的内容,以便您可以看到它运行时的输出。如下图:
![](https://img.kancloud.cn/5c/a9/5ca9bc38c7a66acade39194d517abb7e_1004x625.jpg)
>[danger]## Jenkins插件
从Jenkins现有的功能扩展或开发者们为Jenkins提供的新功能都可以称之为Jenkins插件。有些插件可以无缝添加到您的构建过程,而其它,诸如除CVS和Subversion的SCM插件则需要源代码控制系统的支持。
### 3.1 Jenkins插件安装
Jenkins 插件管理器允许您安装新的插件,和更新您Jenkins服务器上的插件。管理者将连接到联机资料库,检索可用的和已更新的插件。如果您的Jenkins服务器 无法直接连接到外部资源,您可以从Jenkins网站上下载。
在已运行的Jenkins主页中,点击左侧的系统管理—>管理插件进入如下界面:
![](https://img.kancloud.cn/70/9a/709a146f4534c7ddbcdb81aa2f37bf86_1019x613.jpg)
它包含四个标签:
更新:清单中列示了Jenkins为某些插件搜索到了可用的更新。列出的每个插件可以被选择并应用更新。
可选安装:清单中列示了可用于安装(而不是目前已安装的)的所有插件。列出的每个插件都可以被选择并安装。
已安装:清单中列示了已经安装的插件。
高级:允许您通过设定HTTP代理的方式使Jenkins与在线插件库建立连接。此外,还提供了一个上传设备,可以安装你在Jenkins以外已下载的那些插件。
由上图可知,Jenkins缺省集成了maven2插件,并且一旦插件有新版本,会提示更新新版本插件。
如果想安装新的插件,可以点击tab分页中的可选插件。如下图:
![](https://img.kancloud.cn/f7/a4/f7a4cd194584217f6a59818c6f456cc1_896x605.png)
从图可知,各种Jenkins插件根据之前所记述的类型进行分门别类。可勾选任意想安装的Jenkins插件,点击Install without restart按钮进行安装。安装后,所有插件以hpi作为后缀名放置在plugins文件夹下。如果是高级用户还可以自行开发插件方便具体项目使用。
注意:安装完成后需要重启Jenkins部署的容器。这样才能使用新装的插件。
### 3.2 Jenkins插件安装示例
Jenkins运行自动部署war包到servlet容器内,要实现这个功能必须安装一个插件。
![](https://img.kancloud.cn/f7/a4/f7a4cd194584217f6a59818c6f456cc1_896x605.png)
![](https://img.kancloud.cn/96/f9/96f9e8963f171b737facb38d1864ebd9_392x254.png)
下面附上完整的用户手册供大家参考
https://www.jenkins.io/zh/doc/
- 第一章-测试理论
- 1.1软件测试的概念
- 1.2测试的分类
- 1.3软件测试的流程
- 1.4黑盒测试的方法
- 1.5AxureRP的使用
- 1.6xmind,截图工具的使用
- 1.7测试计划
- 1.8测试用例
- 1.9测试报告
- 2.0 正交表附录
- 第二章-缺陷管理工具
- 2.1缺陷的内容
- 2.2书写规范
- 2.3缺陷的优先级
- 2.4缺陷的生命周期
- 2.5缺陷管理工具简介
- 2.6缺陷管理工具部署及使用
- 2.7软件测试基础面试
- 第三章-数据库
- 3.1 SQL Server简介及安装
- 3.2 SQL Server示例数据库
- 3.3 SQL Server 加载示例
- 3.3 SQL Server 中的数据类型
- 3.4 SQL Server 数据定义语言DDL
- 3.5 SQL Server 修改数据
- 3.6 SQL Server 查询数据
- 3.7 SQL Server 连表
- 3.8 SQL Server 数据分组
- 3.9 SQL Server 子查询
- 3.10.1 SQL Server 集合操作符
- 3.10.2 SQL Server聚合函数
- 3.10.3 SQL Server 日期函数
- 3.10.4 SQL Server 字符串函数
- 第四章-linux
- 第五章-接口测试
- 5.1 postman 接口测试简介
- 5.2 postman 安装
- 5.3 postman 创建请求及发送请求
- 5.4 postman 菜单及设置
- 5.5 postman New菜单功能介绍
- 5.6 postman 常用的断言
- 5.7 请求前脚本
- 5.8 fiddler网络基础及fiddler简介
- 5.9 fiddler原理及使用
- 5.10 fiddler 实例
- 5.11 Ant 介绍
- 5.12 Ant 环境搭建
- 5.13 Jmeter 简介
- 5.14 Jmeter 环境搭建
- 5.15 jmeter 初识
- 5.16 jmeter SOAP/XML-RPC Request
- 5.17 jmeter HTTP请求
- 5.18 jmeter JDBC Request
- 5.19 jmeter元件的作用域与执行顺序
- 5.20 jmeter 定时器
- 5.21 jmeter 断言
- 5.22 jmeter 逻辑控制器
- 5.23 jmeter 常用函数
- 5.24 soapUI概述
- 5.25 SoapUI 断言
- 5.26 soapUI数据源及参数化
- 5.27 SoapUI模拟REST MockService
- 5.28 Jenkins的部署与配置
- 5.29 Jmeter+Ant+Jenkins 搭建
- 5.30 jmeter脚本录制
- 5.31 badboy常见的问题
- 第六章-性能测试
- 6.1 性能测试理论
- 6.2 性能测试及LoadRunner简介
- 第七章-UI自动化
- 第八章-Maven
- 第九章-测试框架
- 第十章-移动测试
- 10.1 移动测试点及测试流程
- 10.2 移动测试分类及特点
- 10.3 ADB命令及Monkey使用
- 10.4 MonkeyRunner使用
- 10.5 appium工作原理及使用
- 10.6 Appium环境搭建(Java版)
- 10.7 Appium常用函数(Java版)
- 10.8 Appium常用函数(Python版)
- 10.9 兼容性测试