1、简介
Jenkins由以前的Hudson更名而来,是一个可扩展的持续集成引擎。主要用于持续、自动地构建/测试软件项目,监控一些定时执行的任务,是管理编译集成过程中的应对不同需求进行编译管理的工具。
jenkins的主要特性包括:
- 易于安装--只要把jenkins.war部署到servlet容器,不需要数据库支持;
- 易于配置--所有配置都是通过其提供的web界面实现;
- 集成RSS/E-mail/IM--通过RSS发布构建结果或当构建失败时通过e-mail实时通知;
- 生成JUnit/TestNG测试报告;
- 分布式构建支持--能够让多台计算机一起构建/测试;
- 文件识别--jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
- 插件支持--jenkins可以通过插件扩展,你可以开发适合自己团队使用的工具。
- 跨平台,支持几乎所有的平台,例如Windows,Ubuntu等。
2、安装
环境要求:
- 配置好jdk(建议1.7以上版本);
- 装好maven,配置好环境变量 (配置maven/conf/setting.xml文件);
- 准备一个tomcat环境(也可以通过执行java --jar jenkins.war来进行安装);
- 安装好git(建议用1.7以上版本)。
- 安装好gradle;
- 安装android sdk;
上述工具最好都配置环境变量。
公司的android打包由于jdk,gradle,android build-tools,android sdk(并涉及build.gradle配置)之间版本的影响,必须匹配,使用了jdk1.8,gradle-2.14,build-tools-24.0.1,android sdk-19
公司的Java项目,由于部分项目的需要,要求jdk1.7;
基于以上原因,jenkins中配置两个jdk,项目中选择相应jdk进行配置
下载jenkins.war。官网(http://jenkins-ci.org/)有提供的jenkins.war和针对各种系统的独立安装包。
Jenkins安装有两种方式,一种是通过java直接启动,另一种是通过tomcat启动。
² 通过java是的方式是直接运行java –jar jenkins.war(全路径),启动后通过在浏览器中输入http://localhost:8080/。
² 通过tomcat的启动方式是将war包放在tomcan安装路径下的webapps目录下,启动tomcat。在浏览器中输入http://localhost:8080/jenkins。
更改jenkins工作目录。jenkins的默认工作目录在系统当先用户目录下的.jenkins文件夹下,如windows系统为C:\Users \user-name\.jenkins。通过修改jenkins\WEB-INF\web.xml文件,如下图,修改HUDSON_HOME变量值保存 即可。已部署好的jenkins需要重启tomcat。 根据项目需要可自行选择是否修改。
3、启动
浏览器中输入http://localhost:8080/jenkins/或http://localhost:8080/。就可以看到jenkins的页面。
第一次安装会提示输入administrator password,到指定路径下复制密码进行输入(启动的命令中也会提示密码)。
下一步后会提示安装推荐插件或者自己选择插件进行安装。
建议选择install suggested plugins,这样会自动安装一些常用的插件。安装完成后进入创建账户。
完成账户创建后就完成了Jenkins的设置。
现在,可以开始使用jenkins进行继续构建了。
4、插件安装
jenkins的大部分功能是通过插件实现,常用插件有:
- Git Plugin(依赖Git Client Plugin):git代码管理插件
- SSH plugin:ssh插件
- GitHub Plugin:GitHub插件
- Maven Integration plugin:Maven工程管理插件
- Publish Over SSH: 远程shell插件
- Email Extension Plugin:邮件通知插件
- Gradle插件(android编译专用)
4.1.在线自动安装
插件的安装在"系统管理->管理插件->可选插件"中,如图:
选择需要安装的插件,点击“直接安装”。
4.2本地手动安装
手动将插件下载到本地,然后点击“系统管理->管理插件->高级”,从本地选择插件文件,然后点击上传。
如果是jenkins,也可将hpi文件拷贝至jenkins home目录下的WEB-INF/plugins目录下(或者是jenkins home目录的plugins目录)。
5、配置
5.1系统设置
在"系统管理->系统设置"选项中,对jenkins进行设置。如下图所示,"主目录"即jenkins的工作目录,"工作空间根目录"为每个任务 的工作空间目录,默认为jenkins工作目录下的jobs/jobname/workspace,"构建根目录"用来保存每次构建的构建产物和构建信 息,默认在jenkins工作目录下的jobs/jobname/builds。
Jenkins URL默认是localhost,可以修改为本机IP,以便其他人可以通过IP访问jenkins。
管理员邮件地址就是邮件的发件人地址(必须和后面邮件配置发件人邮箱一致,否则发不成功邮件)
² Publish over SSH
找到Publish over SSH配置项,配置如下配置
底下还有个Test Configuration按钮,点击,如出现Success则表示配置成功。
² 邮件通知
找到邮件通知配置项,根据实际情况配置:
可以勾选 “通过发送测试邮件测试配置” 测试此配置能否连通(需要提供接收邮件地址Test e-mail Recipient), 如果收到以下邮件,恭喜.
5.2工具设置
此处为Global Tool Configuration设置,主要包括JDK,Maven,Git,Gradle设置。以下根据实际情况进行配置。
配置jdk:
配置maven:
配置git:
配置gradle
6、持续集成
6.1创建一个Jenkins任务
1.点击新建任务链接。创建一个maven项目,输入任务名称。
6.2任务的基本配置
Discard Old Builds选项配置如何抛弃旧的构建。如果每次构建相关的文件都保存下来,磁盘空间将被渐渐消耗光。Jenkins为此提供了两种方式让用户选择保留哪些构建任务的相关文件:
1) 保持构建的天数(Days to keep builds):如果其值为非空的N,就仅保留N天之内的构建文件。
2) 保持构建的最大个数(Max # of builds to keep):如果#非空,就仅保留最多#个最近构建的相关文件。
如:保留10个最近的构建,在保持构建的最大个数一栏中输入“10”即可。
6.3源码仓库配置
在项目配置页面源码管理部分,选择Git,然后在Repository URL文本框中输入项目的Git仓库地址。
在Credentials位置点击Add弹出授权输入框
Credentials授权可以是SSH也可以是用户名密码。
输入Branch分支。
6.4构建触发器
下面的Build Triggers是一个持续集成的触发器插件,
可以根据已经完成构建的结果,触发新Job或者传递参数。
默认的选项是Build whenever a SNAPSHOT dependency is built,意思是依赖于快照的构建,当代码有更新时就构建项目。
下面的Build periodically和Poll SCM可以设置定时自动构建。
其中
1) Build whenever a SNAPSHOT dependency is built:依赖于快照的构建,当job依赖的快照版本被build时,执行本job。
2)Buildafter other projects are built:在其他项目构建完成后构建本项目。
3)Buildperiodically:周期性的构建本项目,不管版本库代码是否发生变化,通常不会采用此种方式。
0 4 * * * (每天凌晨4点必须构建一次源码)
4)Buildwhen a change is pushed to GitHub:当GitHub有版本库更新时触发Jenkins进行构建
5)PollSCM:周期性的轮询源码仓库,发现有更新时构建本项目。
*/10 * * * * (每10分钟检查一次源码变化,如果有更新才build)
Jenkins 使用著名的UNIX 任务调试工具Cron(http://en.wikipedia.org/wiki/Cron)所使用的配置方式来配置轮询代码仓库的频率:用 5 个字段表示不同的时间单位,字段之间用空格分隔:分(0-59) 时(0-23) 日(1-31) 月(1-12)星期几(0-7,0、7都表示周日)。
几种特殊匹配符:
1) * :匹配范围内任何值
2) M-N :匹配 M-N 范围内任何值
3) A , B , … , Z :逗号匹配多个值
4) */X 或 M-N/X :范围内能被 X 整除的
星期几与日期是或的关系。
对于一个健康的项目,常见的做法是:每隔10分钟轮询代码仓库,Schedule对应的配置为:*/10 * * * *。
可以用“#”在Schedule配置文本框中进行注释。
6.5构建配置
Root POM:填写你项目的pom.xml文件的位置,注意:是相对位置,如果该文件不存在,会有红色字提示。
构建命令,我们采用最简单的clean install
当然这里可以根据各自需求配置。
6.6构建后操作
构建后操作:"Archive the artifacts"用于配置最终构建产物。
7、持续部署
部署可以和集成放在一个任务里,但是为了减小相互之间的影响,实现若耦合,便于快速的发现问题,我们将集成和部署分开进行。
7.1新建任务
1.点击新建任务链接。创建一个自由风格的软件项目,输入任务名称。
7.2获取部署包
从集成任务中获取到生成的部署包,从Add build step中选择Copy artifacts from another project.
7.3发送部署包
然后继续添加Build选项Send files or execute commands over SSH,利用这个将构建后的war包传到远程服务器上,并通过SSH调用远程的脚本进行部署,如下图:
系统设置中配置好SSH服务器后,服务器就会出现在SSH Server Name的列表中,Transfer Set SourceFiles这个路径默认是在项目的workspace中。Execcommand路径为SSH服务器上的脚本,也就是将war包上传到服务器上之后所执行的脚本文件的位置。
Shell脚本
8、构建后操作
8.1邮件设置
项目中勾选E-mailNotification,将项目相关人的邮箱录入,用逗号分开。点save。
或者“增加构建后步骤”,选中Editable Email Notification可进行详细配置。
局部配置会覆盖掉全局配置
,我们之前在全局配置里配置了构建失败邮件触发器,这里是更加精细的配置 我们选择构建失败Failure-1st触发器,失败以后发邮件给开发者,(这里可以根据实际需要,配置,可以配置多个触发器)开发者的邮件在Recipient List里配置。
注意事项:
1、 windows中是不区分大小写的,而linux是区分大小写的,导致windows中正常执行的过程在linux中可能出现问题。
2、 不同的项目可能依赖的工具版本不一样,可以在Global Tool Configuration设置同一个工具的不同版本,然后在具体项目中选择相应版本的工具。
3、 机器中设置的环境变量可能jenkins用不了,可以在系统设置中设置变量。