实际工作中,很多时候我们需要持续打包,或者出现某个问题后,我们需要追溯到某一个历史版本去做对照,如果手动去做这些操作的话,无疑会耽误很多时间,直接压缩了下班回家陪老婆孩子的时间,所以我们需要一个能够自动化构建项目的工具。
在这里,我们选择了Jenkins。老规矩,先来看看完成后的实际际功能与使用效果
首先搭建成功以后,我们可以通过web的形式来完成所有的操作。登录首页后,可以看到当前所有使用Jenkins构建的项目,每个项目最左侧的S栏使用小球通过颜色来区分不同的状态(蓝色为正常,红色为编译失败,灰色为正在编译中),W栏以天气的形式来描述最近五次的编译情况。
选择某一个项目进去以后,看到下面的页面:
简洁的页面中很直观的可以看到两个编译成功的apk,这个地方与gradle中的buildTypes相对应,我们在每次的项目构建中,都可以得到对应的apk,适应于不同的场景。
在左侧的Build History栏中,我们可以回溯到历次提交的状态。例如我们点击375,得到以下界面:
注意到有一个修改记录,这个与版本控制对应的提交相对应,可以更方便的看到这次的构建是基于哪个提交之上的。我们甚至可以点击detail查看该次提交做了哪些文件的改动。
搭建环境(win)
下载最新安装版jenkins http://mirrors.jenkins-ci.org/windows/latest。
注:笔者使用的是Jenkins 2.5。
(如果不能安装,从http://mirrors.jenkins-ci.org/war/latest/jenkins.war下载war包,手动配置,配置说明参见https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins)。
1.安装
使用安装包直接安装,安装后系统会创建了一个windows服务:Jenkins,默认使用的端口是8080,如果需要修改,打开安装目录下的jenkins.xml文件,修改
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
后保存,启动jenkins服务。
打开http://localhost:8080/,按照提示输入C:\Program Files (x86)\Jenkins\secrets下的密码,安装好插件后,看到类似下面的界面(我这里已经创建了一个任务):
说明jenkins已经安装成功。
2.创建任务
2.1 点“新建”,界面如下:
Jenkins工具在多次更新迭代后,配置已经越来越人性化,直接输入项目名称,选择第一项即可。
2.3 界面如下:
源代码管理根据自己的需要进行选择,我的源代码是使用svn管理的,这里选择“Subversion Modules”,在”Repository URL”录入你的svn仓库地址;第一次录入时还需要录入svn仓库的用户名和口令。
刚才的那个界面比较大,向下滚动,中间部分的界面如下:
构建触发器
构建触发器:如图
触发器支持多种类型,常用的有:
定期进行构建(Build periodically)
根据提交进行构建(Build when a change is pushed to GitHub)
定期检测代码更新,如有更新则进行构建(Poll SCM)
构建触发器的选择为复合选项,若选择多种类型,则任一类型满足构建条件时就会执行构建工作。如果所有类型都不选择,则该Jenkins Job不执行自动构建,但可通过手动点击【Build Now】触发构建。
这里我选Poll SCM,数值设定为H/5 H(9-23) * * *
关于定时器(Schedule)的格式,简述如下:
MINUTE HOUR DOM MONTH DOW
MINUTE: Minutes within the hour (0-59)
HOUR: The hour of the day (0-23)
DOM: The day of the month (1-31)
MONTH: The month (1-12)
DOW: The day of the week (0-7) where 0 and 7 are Sunday.
通常情况下需要指定多个值,这时可以采用如下operator(优先级从上到下):
适配所有有效的值,若不指定某一项,则以占位;
M-N适配值域范围,例如7-9代表7/8/9均满足;
M-N/X或*/X:以X作为间隔;
A,B,C:枚举多个值。
另外,为了避免多个任务在同一时刻同时触发构建,在指定时间段时可以配合使用H字符。添加H字符后,Jenkins会在指定时间段内随机选择一个时间点作为起始时刻,然后加上设定的时间间隔,计算得到后续的时间点。直到下一个周期时,Jenkins又会重新随机选择一个时间点作为起始时刻,依次类推。
为了便于理解,列举几个示例:
H/15 * * * *:代表每隔15分钟,并且开始时间不确定,这个小时可能是:07,:22,:37,:52,下一个小时就可能是:03,:18,:33,:48;
H(0-29)/10 * * * *:代表前半小时内每隔10分钟,并且开始时间不确定,这个小时可能是:04,:14,:24,下一个小时就可能是:09,:19,:29;
H 23 * * 1-5:工作日每晚23:00至23:59之间的某一时刻;
H/5 H/(9-23) * * * 表示每天9点到23点,每5分钟检查一次。
构建:添加Invoke Gradle script,配置如图
(如果没有Invoke Gradle script选项,需要跳到插件管理中下载Gradle plugin)
Switches :即gradle 后面所接的命令。上面相当于执行gradle clean build命令。
构建后操作:构建失败可以发送邮件通知,如图
2162



被折叠的 条评论
为什么被折叠?



