Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知
Posted 码个蛋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知相关的知识,希望对你有一定的参考价值。
从打包到上线全自动化
博客:http://www.jianshu.com/u/470afcb80dc2
文章目录
持续集成
Jenkins
蒲公英
Fir.im
Jenkins的安装
初识Jenkins
General
源码管理
构建触发器
构建
构建后的操作
开始构建
Fir.im上传
蒲公英上传
邮件通知(原生)
邮件通知(python脚本)
0
持续集成
持续集成是一种软件开发实践。团队开发成员经常集成它们的工作,大多数成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
持续集成的价值在于
减少风险
一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况减少重复过程
节省时间、费用和工作量任何时间、任何地点生成可部署的软件
可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。增强项目的可见性
持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。
Jenkins
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
根据官方定义,Jenkins有以下的用途:
构建项目
跑测试用例检测bug
静态代码检测
部署
ios中Jenkins流程
2
蒲公英
蒲公英全方位帮助开发者轻松内测应用。
3
Fir.im
fir.im为开发者提供测试应用极速发布,应用崩溃实时分析、用户反馈收集等一系列开发测试效率工具服务,帮助开发者将更多精力放在产品的开发与应用的优化上。
4
Jenkins的安装
由于需要执行Shell脚本,所以本篇文章的运行环境为Mac OS,如果你希望在linux环境下搭建持续集成环境进,同样可以按照本篇文章的流程进行部署
JDK安装、android SDK安装、Gradle安装、Tomcat安装
这些没什么好说的了吧,只要你会开发Android,这些对你来说都是小菜一碟,特别注意不要忘记对环境变量进行配置,不然后续会有问题下载war(http://mirrors.jenkins-ci.org/)包,选择最新的Release版本
将war放到tomcat的webapps目录下,然后启动tomcat。启动完成之后打开localhosrt:8080/jenkins页面即可进行安装
输入密码,路径已经在下方红字部分给出,直接用记事本打开复制粘贴即可
输入密码
密码
选择推荐配置即可
安装
正在安装
安装成功
5
初识Jenkins
系统配置
在Jenkins左侧有一下几个配置项
这里主要提及一下的是系统管理。这里面有插件管理、用户管理、脚本管理等功能,在后续的使用过程中我们会对这里有一些操作。
涉及到本文中Android构建的插件主要是Gradle plugin、Git plugin、SSH Credentials Plugin等,这些在安装过程中已经覆盖了
系统配置
新建项目
点击“新建”按钮并选择“构建一个自由风格的软件项目”,完了之后会进入到任务的配置界面,配置好之后任务会出现在如上图右边的任务列表中。
新建项目
新建完成
任务配置
选择新建类型之后,就会弹出任务配置页面。你随时可以通过项目中的“配置”按钮对此进行修改
全流程可配置项
General
项目的基本信息
源码管理
源码管理
添加Github账号
构建触发器
Jenkins触发的时机配置,如果都不选,则为手动构建,需要点击“立即构建”按钮才构建。
这里简单介绍一下各个功能
Build periodically:不关心源码是否发生变化,按照一定的周期进行项目构建
Build when a change is pushed to GItHub:只要GitHub上面源码一更新就立即进行构建
Poll SCM:定时检查源码变更,如果有更新就下载最新的代码下来,然后执行构建
Build periodically和Poll SCM都支持日程表的设置,有5个参数:
第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
如
(1) H/15 为每15分钟构建一次
(2) H H(9-16)/2 1-5 星期一到星期五每天9点到下午5点,每隔2小时构建一次
具体使用请参考Jenkins里面的说明,就是点蓝色的问号即可显示
构建
我们使用gradle进行构建工作,这个没什么好说的。命令为gradlew clean assembleRelease,打出正式版的包
构建后的操作
可以让Jenkins在构建完之后执行诸如邮件通知等功能,这个我们稍后再说
这里我仅仅设置了存根的位置
开始构建
配置完毕之后,我们需要在jenkins的workspace下找到自己的工程,把local.properties放进去,不然gradle编译的时候找不到SDK的路径。之后我们点击立即构建
构建中
各个颜色代表的意义如下:
天气的晴雨表代表了项目的质量,这也是Jenkins的一个特色。
出错之后,选择"Console Output"查看具体错误,错误都是在最底下的,一定要拉到页面最底下去查看,不然会出现误导
构建错误
构建成功,显示相应信息
构建成功
构建历史
6
Fir.im上传
打包成功了,下面就到了部署的环节了
Fir.im非常简单,因为它提供一个插件,把整个上传功能都帮你实现好了
下载插件(http://7xju1s.com1.z0.glb.clouddn.com/fir-plugin-1.9.4.hpi)
进入"系统管理"->"管理插件"->"高级"->"上传插件"
在"构建后操作"选择"Upload to fir.im",并添加api token并校验
立即构建项目,成功之后
在你的Console Output里面有如下日志
Fir.im日志
Fir.im应用列表也可以查看到相关信息
Fir.im应用列表
其余操作请参考Fir.im官网介绍(http://blog.fir.im/jenkins/)
7
蒲公英上传
与Fir.im不同,它是通过shell脚本执行post上传指令的
上传App请求接口返回参数
这边怎么使用先放一放,待稍后介绍脚本如何使用时候再说
8
邮件通知(原生)
Jenkins自己也有一套邮件系统,但是我觉得这个与脚本发邮件相比,稍微略显鸡肋。为什么这么说?你想想看看,之前fir.im上传接口回调回来的数据怎样才能归档到邮件里面来呢?当然你说相关配置写死是可以实现的,这没错,但是你觉得这样好吗?
不管怎么说,如果要求没有那么高,仅仅是通知相关人员一下而已,这个还是有很大便利之处的
进入"系统管理"->"系统设置"->"Extended E-mail Notification",点下"高级"
再去下方邮件通知配置,一样要点"高级"
点击测试,你应该可以收到相应邮件
配置"构建后操作",把接收人邮箱还有邮件相关信息都写好。这里写什么都是无所谓的,保持html格式就行
最终收到的效果也是很好的
9
邮件通知(python脚本)
(https://github.com/RunningYoung/jenkins-pgy-python)与JenkinsTemplateForApp
(https://github.com/debugtalk/JenkinsTemplateForApp)。这里我就不贴代码了,我就简单说一下思路,后面我会把代码一起放出。这边结合到蒲公英的上传脚本,先将图片上传,拿到返回的json值,然后获取到git上相关commit信息,一并通过smtp邮件方法进行发送
python脚本构建
具体脚本(https://github.com/r17171709/android_demo/blob/master/pgyer_uploader.py)
留言有福利,具体规则请看
「」
以上是关于Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知的主要内容,如果未能解决你的问题,请参考以下文章
在mac osx 下使用 Jenkins对Android 进行持续集成
在mac osx 下使用 Jenkins对Android 进行持续集成
jenkins+gradle+上传蒲公英(Android持续集成)