目录
第一章、Jenkins是什么?
1、Jenkins的由来
1.1 、Jenkins 的目标
第二章、Jenkins安装与配置
2、Jenkins 安装
3、Jenkins 配置
3.1 系统管理
3.1.1 、提示信息
3.1.1.1 、Utf-8 编码
3.1.1.2 、新的版本
3.1.1.3、安全设置
3.1.2、系统设置
3.1.2.1、 JDK、Maven、Ant 配置
3.1.2.2、邮件通知配置
3.1.2.2.1、配置发件人地址
3.1.2.2.2、配置邮件通知 编辑
3.1.2.3、 Subvers i on 配置
3.1.3 、Configure Global Security(安全设置)
3.1.4 、管理用户设置
3.1.5 、管理插件设置
3.2、项目构建设置
3.2.1、构建自由风格的Job
3. 2.1.1、新建自由风格构建任务
3.2.1.2、构建任务配置
3.2.1.2.1、源码管理配置
3.2.1.2.2 、构建触发器
3.2.1.2、 Ant构建配置
3.2.2、构建Maven风格的Job
3. 2. 2.1、新建Maven构建任务编辑
3. 2. 2. 2、构建任务配置编辑
3.2.2.2.1、源码管理配置
3.2.2.2.2、构建触发器
3.2.2.2.3、Maven构建设置编辑
3.2.2.2.4、构建maven项目的心得
3.2.3、 邮件通知设置
3.2.4、War文件部署设置
3.3、监控
4、Jenkins 插件
4.1 、Jenkins插件安装
4. 2、Jenkins插件安装示例
第一章、Jenkins是什么?
Jenkins是一个可扩展的持续集成引擎。
主要用于:
• 持续、自动地构建/测试软件项目。
• 监控一些定时执行的任务。
Jenkins拥有的特性包括:
• 易于安装-只要把jenkins. war部署到servlet容器,不需要数据库支持。
• 易于配置-所有配置都是通过其提供的web界面实现。
• 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
• 生成JUnit/TestNG测试报告。
• 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
• 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
• 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
1、Jenkins的由来
目前持续集成(ci)己成为当前许多软件开发团队在整个软件开发生命周期内侧重于保 证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您 的开发团队应对如下挑战:
• 软件构建自动化:配置完成后,ci系统会依照预先制定的时间表,或 者针对某一特定事件,对目标软件进行构建。
• 构建可持续的自动化检查:CI系统能持续地获取新增或修改后签入的 源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的 代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构 建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费 的时间和精力(说直接一点也是钱啊,呵呵)。
• 构建可持续的自动化测试:构建检查的扩展部分,构建后执行预先制定 的一套测试规则,完成后触发通知(Email, RSS等等)给相关的当事人。
• 生成后后续过程的自动化:当自动化检查和测试成功完成,软件构建的 周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构 件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户 使用。
部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包 含构建脚本的项目。
下图概括了 CI系统的基本结构:
图1 CI系统的基本结构
该系统的各个组成部分是按如下顺序来发挥作用的:
1 .开发者检入代码到源代码仓库.
2 . CI系统会为每一个项目创建了一个单独的工作区.当预设或请求一次新的构建时, 它将把源代码仓库的源码存放到对应的工作区.
3 . CI系统会在对应的工作区内执行构建过程。
4 .(配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试. 完成后触发通知(Email, RSS等等)给相关的当事人。
5 .(配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用 服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也 可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、SourceForge之类的 网站。
6 . CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些 构建好的构件。
Jenkins就是这么一个CI系统。之前叫做Hudsono
以下是使用Jenkins的一些理由:
• 是所有CI产品中在安装和配置上最简单的。
• 基于肥b访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了 AJAX 的即时反馈.
• Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但 它不仅限于构建基于Java的软件。
• Jenkins拥有大量的插件。这些插件极大的扩展了 Jenkins的功能:它们都是开源 的,而且它们可以直接通过web界面来进行安装与管理.
1.1 、Jenkins 的目标
Jenkins的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。
CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时, 它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员, 然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。
特别是它具有以下优点:
• Jenkins 一切配置都可以在web界面上完成。有些配置如MAVEN JOIE和Email,只需要 配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
• 支持Maven的模块(Module), Jenkins对Maven做了优化,因此它能自动识别Module, 每个Module可以配置成一个job。相当灵活。
• 测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI, 这几乎是件不可能完成的任务。
• 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需 任何配置就可以方便的浏览下载。
第二章、Jenkins安装与配置
2、Jenkins 安装
在最简单的情况下,Jenkins只需要两个步骤:
1 .下载最新的版本(一个WAR文件)。Jenkins官方网址:http://Jenkins~ci.org/
2 .运行 java -jar jenkins. war
注意:Jenkins需要运行Java 5以及以上的版本。
还有一种安装方式就是将下载的war包文件部署到servlet容器,然后启动容器,在浏 览器的URL地址栏中输入类似http://k)calhost:8080/ienkins/这样的地址即可。下图是安装成 功后的界面(使用的是Linux+Tomcat6+Java6环境):
图2 Jenkins主界面
3、Jenkins 配置
写在配置前的一些话:Jenkins的配置不可能全部都说到的,大部分配置是有英文说明的, 点击输入框后面的问号就可以看见了。英文不会用翻译工具,连蒙带猜的,多测试几次,你 就懂了。
3.1 系统管理
在己运行的Jenkins主页中,点击左侧的系统管理进入如下界面:
图3 Jekins系统管理
3.1.1 、提示信息
Ps:版本不同提示的消息有可能不同
3.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 : and Tomcat il8n for more details.
Jenkins建议在tomcat中使用ut&8编码,配置tomcat下conf目录的server.xml文件:
图4 URIEncoding编码设置
Ps:如果Job的控制台中文输出乱码,请将URIEncoding="utf-8"更改为 useBodyEncodingForURI="true"
3.1.1.2 、新的版本
New version of Jenkins (1.518.JENKINS-14362-jzlib) is available fc download f changelog j.
提示有新的版本可以下载了,喜欢更新的点击download去下载吧!
3.1.1.3、安全设置
图5安全提示消息
詹金斯允许网络上的任何人代表您启动进程。考虑至少启用身份验证来阻止滥用。点击 Dismiss忽略该消息,点击Setup Security进入设置界面.详细设置请参考Configure Global Security(安全设置)章节
3.1.2、系统设置
在己运行的Jenkins主页中,点击左侧的系统管理—>系统设置进入如下界面:
图6 系统设置界面
3.1.2.1、 JDK、Maven、Ant 配置
配置一个JDK、Ant、Maven实例,请在每一节下面单击Add(新增)按钮,这里将添加实例 的名称和绝对地址。下图描述了这两个部分。
图7 JDK配置界面
JDK别名:给你看的,随便你自己,叫阿猫阿狗都可以
JAVA_HOME:这个是本机JDK的安装路径(错误的路径会有红字提示你的)
自动安装:不推荐这个选项
后面Ant与Maven的配置是一样的,JDK去oracle官网下载,Ant与Maven去apache官网下载
Ps:每个文本框后面都有个问号,点击问号就会出现帮助信息
3.1.2.2、邮件通知配置
3.1.2.2.1、配置发件人地址
图8发件人地址配置界面
System Admin e-mail address: Jenkins邮件发送地址,如果你这个没有配置,等着发邮件的时候报 错吧,当时我也是这儿没有配置,郁闷了我一周的时间。
3.1.2.2.2、配置邮件通知
图9邮件通知
这个就非常的简单了,根据的的邮箱提供者的参数配置就行了。
Ps:小技巧:用户默认邮件后缀配置了后,以后你填写邮件地址只需要@之前的就行了
3.1.2.3、 Subvers i on 配置
图 10 Subversion 配置
Subversion Workspace Version: Subversion的版本号,选择你对应的版本号就行了
3.1.3 、Configure Global Security(安全设置)
在已运行的Jenkins主页中,点击左侧的系统管理—>Configurc Global Security进入如 下界面:
设置如上图,保存后系统管理中就出现管理用户的选项。页面右上角也会出现登录/注册的 选项。
3.1.4 、管理用户设置
在右上角点击注册
图12 注册用户界面
点击sign up按钮,提示你现在已经登录.返回首页.
登录后和匿名账号看到的首页有几点不同,如下图红框所示:
图13用户登录界面
3.1.5 、管理插件设置
建议先阅读Jenkins插件章节,在回来安装如下所示的插件。这个插件将生成的构件(war 或者ear)部署到主流的服务器上。
插件名称:DeplQv Plugin
插件介绍:This plugin takes a war/ear file and deploys that to a running remote application server at the end of a build
3.2、项目构建设置
3.2.1、构建自由风格的Job
3. 2.1.1、新建自由风格构建任务
在已运行的Jenkins主页中,点击左侧的新建Job进入如下界面:
图14 新建Job界面
这时,需要为新的构建任务指定一个名称。(这里输入的任务名称;Ant_test)这里有几种的任务类型可供选择,鉴于初步介绍,先选择构建一个自由风格的软件项目,对于其他类型,经常使用的是拷贝已存在任务,这主要为了能在现有的任务基础上新建任务,点击OK按钮。
3.2.1.2、构建任务配置
3.2.1.2.1、源码管理配置
演示是使用Subversion的链接,在Repository URL中输入你的项目链接,如果没有权限则会提示 如下图:
图15 Subversion配置界面
点击enter credential输入用户名和密码(我猜大家一般都是使用的用户名和密码登陆的)
图16 Subversion权限认证界面
Ps: svn的用户名和密码设置了是没有办法在web界面修改的。如果要修改则先去Jenkins 目录删除hudson.scm.SubversionSCM.xml文件(点到为止,毕竟这只是入门教程)
3.2.1.2.2 、构建触发器
在其他项目构建完成后才执行构建:指定的项目完成构建后,触发此项目的构建。
Poll SCM :这是CI系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次 构建。例如,表达式中填写0,15,30,45 ****将使Jenkins每隔15分钟就检查一次您源码仓 库的变化。
Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不 管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。
3.2.1.2、 Ant构建配置
因为我的项目是用ant脚本实现的编译和打包,所以我选择的是Invoke Ant, Ant Version选 择你Ant配置的那个名字,注意不要选择default喔,那个选择了没有用。
图17 Ant构建配置界面
如果你的构建脚本build.xml不在workspace根目录、或者说你的构建脚本不叫build.xmL那么需要
在高级里设置Build File选项的路径,指明你的脚本。注意:是相对路径
3.2.2、构建Maven风格的Job
3. 2. 2.1、新建Maven构建任务
图18新建Job界面
这时,需要为新的构建任务指定一个名称。(这里输入的任务名称为:mavenjest)这里有 几种的任务类型可供选择,鉴于初步介绍,先选择构建一个maven2/3项目。对于其他的类 型,经常使用的是拷贝已存在任务;这主要为了能在现有的任务基础上新建任务。点击0K按钮。
3. 2. 2. 2、构建任务配置
图19构建任务配置界面
3.2.2.2.1、源码管理配置
演示是使用Subversion的链接,在Repository URL中输入你的项目链接,如果没有权限则会提示 如下图:
图20 Subversion配置界面
点击enter credential输入用户名和密码(我猜大家一般都是使用的用户名和密码登陆的)
图21 Subversion权限认证界面
Ps: svn的用户名和密码设置了是没有办法在web界面修改的。如果要修改则先去Jenkins 目录删除hudson.scm.SubversionSCM.xml文件(点到为止,毕竟这只是入门教程)
3.2.2.2.2、构建触发器
在其他项目构建完成后才执行构建:指定的项目完成构建后,触发此项目的构建。
Poll SCM :这是CI系统中常见的选项。当您选择此选项,您可以指定一个定时作业 表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次 构建。例如,表达式中填写0,15,30,45 ****将使Jenkins每隔15分钟就检查一次您源码仓 库的变化。
Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不 管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。
3.2.2.2.3、Maven构建设置
图22 Maven构建配置界面
2013-08-22 ^b^E Goals and options : clean install -Dmaven.test.skip=true #加入了跳过测
试的代码
Root POM:填写你项目的pom.xml文件的位置,注意:是相对位置,如果该文件不存在,会有红色字提 示。
3.2.2.2.4、构建maven项目的心得
使用Jenkins构建maven项目的一点小心得:
maven项目的构建是比较麻烦的,如果你的项目是下图这种结构。那么恭喜你!你新建一个job就可以 了,因为只有一个根。如果你的 svn 地址是:https://192.xxx/Pe_Project/root-pom,那么 Root POM 只需要保持默认就行了,因为Jenkins可以再workspace目录下面找到pom.xml文件
如果你的 svn 地址是:https://192.xxx/Pe_Project,那么 Root POM 需要指定为 root-pom/pom.xml,因为 Jenkins可以再workspace/root-pom目录下面找到pom.xml文件
图23 Maven项目结构界面1
上面这种方法打包的时候非常简单,但是用eclipse开发的时候你就不右键run as —>tomca 启动了,如果你想使用这种方式,将tomcat换成jetty即可。
如果你的项目是下图这种结构,那么非常悲剧的告诉你,你要建立好几个job来构建这一个项目,因为这个项目有4个根:
图24 Maven项目结构界面2
上面这种方法打包的时候比较麻烦,但是用eclipse开发的时候你就可以使用右键run as->tomca 启动了
3.2.3、 邮件通知设置
图26收件人列表界面
在Recipients中输入收件人邮件地址,如果用多个收件人用“,”英文逗号隔开
3.2.4、War文件部署设置
首先你必须安装好Deploy Plugin插件,然后在tomcat的conf目录配置tomcat-users.xml 文件,在<tomcat-users>节点里添加如下内容:
<role rolename=,'manager-gui"/>
<role rolename=,'manager-script"/>
<role rolename=,'managerjmx'7>
<role rolename=,'manager-status"/>
<user username="usernameM password="password,'
roles="manager-gui,manager-script,manager-jmx,manager-status'7>
引号里的username和password可以随便替换,待会要用的。 好了,回到Jenkins项目配置页面:
图27构建后操作界面
选择 Add post-build action,然后选择 Deploy war/ear to a container,如下图:
图28远程部署配置界面
WAR/EAR files: war文件的存放位置,如:target/test.war注意:相对路径,target前是没有/的。 Context path:访问时需要输入的内容,如 ofCard 访问时如下:http:〃192.168.x.x:8080/ofCard/ 如果为空,默认是war包的名字。
Container:选择你的 web 容器,如 tomca6.x
Manager user name:填入 tomcat-users.xml 配置的 username 内容
Manager password:填入 tomcat-users.xml 配置的 password 内容
Tomcat URL:填入 http:〃192.168.x.x:8080/
Deploy on failure:构建失败依然部署,一般不选择
注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果 卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。
最后不要忘记点击保存喔。
好了!到此一个项目的获取源码,打包,远程部署,邮件通知就完成了。
3.3、监控
当任务一旦运行,您将会看到这个任务正在队列中的仪表板和当前工作主页上运行。这 两种显示如下。
图29主页监控(左),项目监控(右)
一旦构建完成后,完成后的任务将会有三个地方进行显示。 你可以在Jenkins的控制面板上看到它,如下图。
图30主页项目界面
在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代表着"最新构 建状态”,W栏目代表着"构建稳定性”。Jenkins使用这两个概念来介绍一个作业的总体状 况:
构建状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:
Successful:完成构建,且被认为是稳定的。
Unstable:完成构建,但被认为不稳定。
Failed:构建失败。
Disabled:构建己禁用。
图31构建状态界面
构建稳定性:当一个Job中构建己完成并生成了一个未发布的目标构件,如果您准备评估此 次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布一个稳健指数(从0T00 ), 这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和 静态代码分析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评 分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。
图33项目主界面
你也可以在当前job主界面看到它,如下图左下部分:
图33 项目主界面
当前作业主页上还包含了一些有趣的条目。左侧栏的链接主要控制Job的配置、删除作 业、构建作业。右边部分的链接指向最新的项目报告和构件。
通过点击构建历史(Build History)中某个具体的构建链接,您就能跳转到Jenkins为这 个构建实例而创建的构建主页上。如下图
图34构建历史界面
如果你想通过视图输出界面来监控当前任务的进展情况。你可以单击Console Output (控制 台输出)。如果工作己完成,这将显示构建脚本产生的静态输出;如果作业仍然在运行中, Jenkins将不断刷新网页的内容,以便您可以看到它运行时的输出。如下图:
图35控制台输出界面
4、Jenkins 插件
从Jenkins现有的功能扩展或开发者们为Jenkins提供的新功能都可以称之为Jenkins 插件。有些插件可以无缝添加到您的构建过程,而其它,诸如除CVS和Subversion的SCM 插件则需要源代码控制系统的支持。
4.1 、Jenkins插件安装
Jenkins插件管理器允许您安装新的插件,和更新您Jenkins服务器上的插件。管理者 将连接到联机资料库,检索可用的和己更新的插件。如果您的Jenkins服务器无法直接连 接到外部资源,您可以从Jenkins网站上下载。
在己运行的Jenkins主页中,点击左侧的系统管理—>管理插件进入如下界面:
图36插件管理界面
它包含四个标签:
更新:清单中列示了 Jenkins为某些插件搜索到了可用的更新。列出的每个插件可以被选择 并应用更新。
可选安装:清单中列示了可用于安装(而不是目前己安装的)的所有插件。列出的每个插件 都可以被选择并安装。
已安装:清单中列示了己经安装的插件。
高级:允许您通过设定HTTP代理的方式使Jenkins与在线插件库建立连接。此外,还提供了 一个上传设备,可以安装你在Jenkins以外已下载的那些插件。
由上图可知,Jenkins缺省集成了 maven2插件,并且一旦插件有新版本,会提示更新新 版本插件。
如果想安装新的插件,可以点击tab分页中的可选插件。如下图:
从图可知,各种Jenkins插件根据之前所记述的类型进行分门别类。可勾选任意想安装的Jenkins插件,点击Install without restart按钮进行安装。安装后,所有插件以hpi作 为后缀名放置在plugins文件夹下。如果是高级用户还可以自行开发插件方便具体项目使用。 注意:安装完成后需要重启Jenkins部署的容器。这样才能使用新装的插件。
4. 2、Jenkins插件安装示例
Jenkins运行自动部署war包到servlet容器内,要实现这个功能必须安装一个插件。
图38 安装插件界面
安装/升级插件:
图39 插件安装界面
好了,至此Deploy Plugin插件安装完成!