jenkins中文使用手册.docx
《jenkins中文使用手册.docx》由会员分享,可在线阅读,更多相关《jenkins中文使用手册.docx(35页珍藏版)》请在冰豆网上搜索。
jenkins中文使用手册
Jenkins
操作手册
苏州测试部
第1章 概 述
1.1什么是持续集成
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。
尤其是近些年来,敏捷(Agile)在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。
它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。
而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成最早由MartinFowler于10年前已经提出,希望通过持续集成能够实现以下过程:
Ø任何人在任何地点,任何时间可以构建整个项目。
Ø在持续集成构建过程中,每一个单元测试都必须被执行。
Ø在持续集成构建过程中,每一个单元测试都必须通过。
Ø持续集成构建的结果是可以发布的软件包。
Ø当以上任何一点不能满足时,整个团队的主要任务就是去解决这个问题。
1.2持续集成的核心价值
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。
换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
1.3持续集成的原则
业界普遍认同的持续集成的原则包括:
1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。
常用的版本控制软件有IBMRationalClearCase、CVS、Subversion等;
2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;
3)需要有专门的集成服务器来执行集成构建。
根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;
4)必须保证构建的成功。
如果构建失败,修复构建过程中的错误是优先级最高的工作。
一旦修复,需要手动启动一次构建。
1.4持续集成系统的组成
由此可见,一个完整的构建系统必须包括:
Ø一个自动构建过程,包括自动编译、分发、部署和测试等。
Ø一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。
Ø一个持续集成服务器。
本文中介绍的Jenkins/Jenkins就是一个配置简单和使用方便的持续集成服务器。
1.5Jenkins介绍
Jenkins是一个软件界非常流行的开源CI服务器,Hodson是基于Java开发的一种工具,用于监控持续重复的工作,功能包括:
Ø持续的软件版本发布/测试项目。
Ø监控外部调用执行的工作。
Jenkins的新版本取名叫Jenkins,所以本文档中的指Jenkins与Jenkins这2个词为指同一个软件。
使用Jenkins人员需要对持续集成的概念有所了解,更多的要求对代码的编译过程很了解,Jenkins对于maven工程完整的编译和发布流程如下:
ØJenkins从SVN上拉取代码到指定的编译机器上。
Ø在编译机器上触发编译命令或脚本。
Ø编译得到的结果文件。
Ø把结果文件传到指定的服务器上。
使用Jenkins进行编译的人员,需要对自己的代码的编译方法,过程十分了解,对编译任务进行分拆。
第2章基础篇
2.1Jenkins安装
2.1.1资源下载
首先从http:
//jenkins-ci.org/下载最新的jenkins版本,最新版本为1.594,下载的文件载体为jenkins.war;
Jenkins为免费开源软件,并且更新速度稳定,每周一次更新。
所以网站上会提供有2个版本,一个最新版本,一个老但稳定的版本。
可自行选择。
2.1.2运行Jenkins的前提
1)环境变量的设置:
a)JAVA_HOME,设置JDK的安装目录,建议采用JDK1.7,但不建议用JDK1.8
b)ANT_HOME,设置Ant的目录,验证过ant最新版本1.9.4可用。
c)JENKINS_HOME,设置Jenkins的配置文件目录,默认为用户的目录,建议为Jenkins的安装目录,便于控制;
d)MEVAN_HOME,设置Maven的目录,验证3.2.3可用。
e)PATH,需要将java、ant,maven的bin目录配置到path目录下;
f)CLASSPATH,需要将JDK的tools.jar配置到classpath目录中;
2.1.3Jenkins启动
可以有两种方法进行运行jenkins;
a)直接通过命令行
如下:
/opt/jdk1.7.0_71/bin/java-jar/opt/jenkins.war--httpPort=8089--logfile=/opt/jenkins/jenkins.log
说明:
httpPort为jenkins运行的端口,默认端口为8080,上述命令其实让Jenkins运行在Winstone容器中;
以下有一些常用的参数:
更多参数可以查看
CommandLineParameter
Description
--httpPort=$HTTP_PORT
RunsJenkinslisteneronport$HTTP_PORTusingstandard http protocol.Thedefaultisport8080.Todisable(becauseyou'reusing https),useport -1.
--httpListenAddress=$HTTP_HOST
BindsJenkinstotheIPaddressrepresentedby$HTTP_HOST.Thedefaultis0.0.0.0—i.e.listeningonallavailableinterfaces.
Forexample,toonlylistenforrequestsfromlocalhost,youcoulduse:
--httpListenAddress=127.0.0.1
--httpsPort=$HTTP_PORT
UsesHTTPSprotocolonport$HTTP_PORT
--httpsListenAddress=$HTTPS_HOST
BindsJenkinstolistenforHTTPSrequestsontheIPaddressrepresentedby$HTTPS_HOST.
--prefix=$PREFIX
RunsJenkinstoincludethe$PREFIXattheendoftheURL.
Forexample,tomakeJenkinsaccessibleat http:
//myServer:
8080/jenkins,set--prefix=/jenkins
--ajp13Port=$AJP_PORT
RunsJenkinslisteneronport$AJP_PORTusingstandard AJP13 protocol.Thedefaultisport8009.Todisable(becauseyou'reusing https),useport -1.
--ajp13ListenAddress=$AJP_HOST
BindsJenkinstotheIPaddressrepresentedby$AJP_HOST.Thedefaultis0.0.0.0—i.e.listeningonallavailableinterfaces.
--argumentsRealm.passwd.$ADMIN_USER
Setsthepasswordforuser$ADMIN_USER.IfJenkinssecurityisturnedon,youmustloginasthe$ADMIN_USERinordertoconfigureJenkinsoraJenkinsproject.NOTE:
Youmustalsospecifythatthisuserhasan admin role.(Seenextargumentbelow).
--argumentsRealm.roles.$ADMIN_USER=admin
Setsthat$ADMIN_USERisanadministrativeuserandcanconfigureJenkinsifJenkins'securityisturnedon.See formoreinformation.
-Xdebug-Xrunjdwp:
transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n
Setsdebuggingonandyoucanaccessdebugon$DEBUG_PORT.
-%m-%d_%H-%M"`.log
Loggingtodesiredfile
-XX:
PermSize=512M-XX:
MaxPermSize=2048M-Xmn128M-Xms1024M-Xmx2048M
referring
b)在Web容器中运行
Jenkins可以运行在标准的Web服务器中,支持Tomcat、Jboss、WebLogic中,只需要将Jenkins.war放置到相应目录,启动服务就可以进行访问;推荐采用这个方式运行,方便配置和迁移。
2.1.4Jenkins访问
验证jenkins是否运行正常,通过访问即可。
Hudosn应用支持IE、FireFox等浏览器。
2.1.5分布式jenkins安装
为了满足各种编译环境的需求,jenkins支持分布式,以jenkinsagent的形式运行slave机。
1.在jenkins的主机上,选择系统管理>管理节点
2.新节点>输入名字
3.选择DumbSlave>OK
4.设置处理器的数量,一般以CPU核数来确定,如4核的一般写3
5.选择远程根目录,在slave机上用来存放jenkins自身运行所要的文件
6.使用方式:
为了分担master机器的负载,可选尽可能多的使用本机器
或,只允许运行指定本机的任务
7.启动方法:
对于window推荐使用LaunchslaveagentsviaJavaWebStart
8.有效性:
任何时间有效
配置好了之后,
1.从slave机器上打开浏览器,访问jenkins主机:
)
2.在系统管理>管理节点,打开建立的节点。
3.点启动按钮,jenkinsagent就会从浏览器下载包需要的jar、jnlp包,然后启动。
运行程序
在windows中,可以安装成为服务进程,但如果是运行selenium这种自动化工作的机器,则不建议这么做。
2.2Jenkins基本设置
Jenkins的基本设置都在系统的后台设置中,具体路径为:
系统管理->系统管理
2.2.1设置JDK
可以在这里进行JAVA_HOME设置,假如已经系统已经设置JAVA_HOME,可以不需要再进行配置,同时可以让Jenkins再安装一个JDK。
2.2.2设置Maven
2.2.3设置ANT
可以在这里进行ANT_HOME设置,假如系统已经设置了ANT_HOME,可以不需要再进行配置,同时可以让Jenkins安装一个最新的ANT。
备注:
为了让配置更加简单,建议在系统级设置JAVA_HOME和ANT_HOME,MAVEN_HOME,便于系统的迁移。
2.2.4配置邮件信息
系统能够在执行计划完成后发送结果邮件,需要配置邮件服务器的相关信息:
上面还需要配置Jenkins的URL地址,作为后期访问地址,一旦设定URL,就不要轻易修改。
左边显示的可过滤的条件及属于当前用户的BUG
2.3创建任务
在Jenkins主菜单点击“新建任务”,出现下图:
键入任务名称,选择“Buildafree-stylesoftwareproject”选项,点击“OK”按钮后,出现下面的界面:
说明:
a)Projectname:
项目(任务)名称,项目(任务)名称不能重复,后面通称任务;
b)Description:
项目描述,主要对任务进行简要说明;
c)Discardoldbuilds:
是否保留过去的构建,默认是保留。
(帮助:
这里控制着您想要在Jenkins所在的磁盘把构建记录存储的有效期(诸如控制台输出、编译构件等等)。
Jenkins为此提供了两个标准:
1。
时间驱动。
在Jenkins中您可以判断如果达到一定时限来删除一条记录(例如,七天前)。
2。
数量驱动。
在Jenkins中您可以确保它拥有N份构建。
如果又有新的构建开始,最早的那份(记录)就将被删除。
Jenkins也可以让您建立的个别构建定义为'永远保持这个记录',以便防止某些重要的构建被自动丢弃。
)
d)Thisbuildisparameterized:
如果选择此选项,Jenkins将允许您提供一套任意的键值对参数,它们会被传递到构建过程里。
配置的参数往往是构建运行环境中的一些环境变量。
(帮助:
当您使用了Jenkins的各种自动化,有时要求在构建过程中提供一组用户的输入,使用“parameterize”就能够更方便构建。
例如,您可能会设立一个按需测试,在那里用户可以提交一个二进制文件的压缩文件来进行测试。
e)DisableBuild:
禁止此任务进行构建,默认是不禁止;
f)Executeconcurrentbuildsifnecessary(beta):
g)AdvancedProjectOptions
1)Quiteperiod:
构建前等待时间;
2)RetryCount:
从SCM仓库中取出尝试时间;
3)Blockbuildwhenupstreamprojectisbuilding:
假如上一个仍在构建过程中,停止本次构建任务;
4)Usecustomworkspace:
指定当前任务的workspace,否则默认为JENKINS_HOME的工作目录
h)SourceCodeManagement:
指定编译源代码的获取方式:
1)None:
手动方式;
2)CVS:
从CVS仓库中获取;
备注:
CVS通过Module(s)获取多个项目工程
3)SVN:
从SVN仓库中获取;
备注:
SVN通过“Addmorelocations”来添加多个工程,在SVN的URL中需要添加用户名密码信息,例如:
svn:
//username:
/SKELETON-V2.0/trunk/program/source/skeletonCommon
i)BuildsTriggers:
设置构建触发器
1)Buildafterotherprojectsarebuilt:
设置构建的流水线,配置在设置的任务构建完成后自动构建此任务,进行设置后,可以在任务统揽中看到以下“下游项目说明”
2)Triggerbuildsremotely(e.g.,fromscripts):
设置远程触发进行任务构建;
3) Buildperiodically:
设置构建频率,设置跟QuartzCronTrigger设置雷同;
4) PollSCM:
设置从SCM库中检查源代码是否更新:
备注:
关于第三和第四两点,基本配置为
分钟小时天月星期
举例:
每分钟进行集成*****,每5分钟进行集成5****,每天12点和23整点进行集成012,23***
j)BuildEnvironment:
设置构建环境设置
1)ToolEnvironment:
设置工具的环境变量
2)Createaformattedversionnumber:
设置构建的版本号
k)Build:
执行构建
构建支持6种方式,shell(运行于Linux环境)、Maven(支持Maven编译)、Command(windows批处理命令)、Ant、EasyAnt、Exportjobruntimeparameters。
举例:
1)Ant:
备注:
ØTargets主要是执行ant脚本中哪几个部分,可以添加多个;
ØBuildFile:
需要指定Ant脚本的物理位置;
ØProperties:
添加Ant指定的属性;
ØJavaOptions:
设置运行java时的属性,例如内存、堆大小等;
2)Command
备注:
执行Windows的批处理命令,这里不能利用Hodson设置的变量;
l)Post-buildActions
1)PublishJavadoc:
设置构建时产生JavaDoc时的文件目录;
2)Archivetheartifacts:
设置构建后哪些文件需要进行归档处理;
3)E-mailNotification:
邮件提醒
备注:
可以向多个人发送邮件,通过“;”进行分割
4)StatusMonitor:
构建状态监控;
:
),好,基本的配置到这里结束,可以搭建一个新的任务进行构建了;
2.4运行并监控构建作业
2.4.1主控制面板
当配置完成一个任务后,回到主控制面板:
Ø上图中右边列表列举现在已经配置的任务已经任务当前的状态
Ø左边有构建队列,当有构件时,会把当前正在构建的队列在上面进行列举;
Ø上图右下角有RSS订阅,支持订阅全部、失败和最后一次等;
2.4.2手动构建一个任务
当一个任务配置完成后,可以采用手动构建和触发器构建两种方式,在项目验证阶段,可以通过手动触发方式,点击任务区的“立即构建”,会在BuildHistory中出现以下进度条:
点击进度条,可以进入到具体的编译过程,例如下图:
等构建完毕后,你可以看到最新任务构建的结果图:
浏览任务的整体运行状况入下图:
最左边列图示为最后一次构建状态,第二列图示为整个任务的构建总体结果,具体如下表示,下图也只截取部分:
2.4.3任务构建状态
Jenkins通过当前构建状态和构建稳定新
Ø当前构建状态分为以下几种
项目构建完成,同时被认为是稳定的
项目构建完成,但被认定为不稳定
构建失败
作业已经禁止
Ø构建稳定行,Jenkins会基于一些后处理器任务为构建发布一个稳健指数(从0-100),越高越稳定
构建成功率>80%
构建成功率60%-79%
构建成功率40%-59%
构建成功率20%-39%
构建成功率0-19%
期待任务编译都处于
和
状态。
第3章提高篇:
3.1插件管理:
由Jenkins类库现有的Jenkins功能性扩展和开发者们为Jenkins提供的新功能都可以称之为Jenkins插件。
Jenkins将插件分为ArtifactUploaders、AuthenticationandUserManagement、BuildNotifiers、BuildReports、BuildTools、BuildTriggers、BuildWrappers、ClusterManagementandDistributedBuild、CommandLineInterface、ExternalSite/ToolIntegrations、Maven、Miscellaneous、OtherPost-BuildActions、PageDecorators、SlaveLaunchersandControllers、SourceCodeManagement、UserInterface等17个插件大类。
1)ArtifactUploaders:
协助把构建结果发布到一些网络终端上,例如FTP服务器、Tomcat应用服务器、J版本库等等;
2)AuthenticationandUserManagement:
Hodson基本包不提供用户权限管理,通过此插件,融入LDAP、MySql等权限管理插件,丰富权限管理;
3)BuildNotifiers:
任务构建完成后发布通知的方式,支持Twitter、IRC、Google日历等;
4)BuildReports:
主要针对构建的源代码进行分析的报表,例如FindBugs、Checkstyle等等,
5)BuildTriggers:
构建事件监听并触发构建的插件,例如通过URL改变进行触发编译;
6)BuildTools:
实现额外构建工具的插件,例如RubyPlugin、GrailsPlugin等;
7)BuildWrappers:
8)ClusterManagementandDistributedBuild:
9)CommandLineInterface:
10)ExternalSite/ToolIntegrations:
11)Maven:
12)Miscellaneous:
13)OtherPost-BuildActions:
14)PageDecorators:
15)SlaveLaunchersandControllers:
16)SourceCodeManagement:
17)UserInterface:
备注:
所有的插件安装完毕后,必须重启Jenkins才能使插件生效,不支持即插即用模式。
具体插件使用说明:
3.1.1FindBugs插件设置
1.下载FindBugs,并解压到相应的目录,将findbugs-ant.jar拷贝ANT_HOME\lib目录下;
2.设置FINDBUGS_HOME目录为解压目录;
3.Build.xml文件中配置FindBugs配置:
a)设置findBugs在build.xml中的路径
—设置环境变量定义-->
—定义findbugs.home路径-->
b)声明Findbugs任务
c)创建FindBugs任务,例如: