Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知
Posted 码个蛋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知相关的知识,希望对你有一定的参考价值。
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/dc03e64740a446b993333e88a79400fd.jpg)
从打包到上线全自动化
博客:http://www.jianshu.com/u/470afcb80dc2
文章目录
持续集成
Jenkins
蒲公英
Fir.im
Jenkins的安装
初识Jenkins
General
源码管理
构建触发器
构建
构建后的操作
开始构建
Fir.im上传
蒲公英上传
邮件通知(原生)
邮件通知(python脚本)
0
持续集成
持续集成是一种软件开发实践。团队开发成员经常集成它们的工作,大多数成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
持续集成的价值在于
减少风险
一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况减少重复过程
节省时间、费用和工作量任何时间、任何地点生成可部署的软件
可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。增强项目的可见性
持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。
Jenkins
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
根据官方定义,Jenkins有以下的用途:
构建项目
跑测试用例检测bug
静态代码检测
部署
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/7f40a3edc6f1467f8311e5ddb7cfe57c.jpg)
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页面即可进行安装
输入密码,路径已经在下方红字部分给出,直接用记事本打开复制粘贴即可
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/cc64cd7ef55f4f34af850001cb2b594f.jpg)
输入密码
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/d910c081a11f4f1987942f42867cd2df.jpg)
密码
选择推荐配置即可
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/a71c2be828bf49d2b02f467dffcf54c1.jpg)
安装
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/cd6df3b4087b4eb8b818d98f7a2a03e1.jpg)
正在安装
安装成功
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/6fbe4404b4424f94b0554d0b8d0602c2.jpg)
5
初识Jenkins
系统配置
在Jenkins左侧有一下几个配置项
这里主要提及一下的是系统管理。这里面有插件管理、用户管理、脚本管理等功能,在后续的使用过程中我们会对这里有一些操作。
涉及到本文中Android构建的插件主要是Gradle plugin、Git plugin、SSH Credentials Plugin等,这些在安装过程中已经覆盖了
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/ced7f6a2ac5b4592b96136f21ebcd495.jpg)
系统配置
新建项目
点击“新建”按钮并选择“构建一个自由风格的软件项目”,完了之后会进入到任务的配置界面,配置好之后任务会出现在如上图右边的任务列表中。
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/a2d34ed730b5428a8f82d33e183fc627.jpg)
新建项目
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/6a7a773110a7412caff8174e4fcbc4eb.jpg)
新建完成
任务配置
选择新建类型之后,就会弹出任务配置页面。你随时可以通过项目中的“配置”按钮对此进行修改
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/a3274e90360a41e59694f1d2cb6c9f0c.jpg)
全流程可配置项
General
项目的基本信息
源码管理
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/21d0447577ee4c7f9da7ce0fb48c3534.jpg)
源码管理
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/cb40a369fcc144019724a583504cf7b5.jpg)
添加Github账号
构建触发器
Jenkins触发的时机配置,如果都不选,则为手动构建,需要点击“立即构建”按钮才构建。
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/73691d8c5dad47b986b3568325c864d1.jpg)
这里简单介绍一下各个功能
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,打出正式版的包
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/d0a41b3618644e2bacd8bdeef05a056a.jpg)
构建后的操作
可以让Jenkins在构建完之后执行诸如邮件通知等功能,这个我们稍后再说
这里我仅仅设置了存根的位置
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/b51e68eb41e54a7da1de98e8a280a147.jpg)
开始构建
配置完毕之后,我们需要在jenkins的workspace下找到自己的工程,把local.properties放进去,不然gradle编译的时候找不到SDK的路径。之后我们点击立即构建
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/79393b71f98f4527bbd8159a82a18309.jpg)
构建中
各个颜色代表的意义如下:
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/a82e83d115c44a2a97f78bc2efa13b8a.jpg)
天气的晴雨表代表了项目的质量,这也是Jenkins的一个特色。
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/419dc9eee33c463b87512459cbbdf32c.jpg)
出错之后,选择"Console Output"查看具体错误,错误都是在最底下的,一定要拉到页面最底下去查看,不然会出现误导
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/f30a1a252266416084f231d2ec22fd28.jpg)
构建错误
构建成功,显示相应信息
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/47ae17407bf541dfbe8bf5ca91442bc7.jpg)
构建成功
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/0da8e163211749508636727c7a75ec47.jpg)
构建历史
6
Fir.im上传
打包成功了,下面就到了部署的环节了
Fir.im非常简单,因为它提供一个插件,把整个上传功能都帮你实现好了
下载插件(http://7xju1s.com1.z0.glb.clouddn.com/fir-plugin-1.9.4.hpi)
进入"系统管理"->"管理插件"->"高级"->"上传插件"
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/8fbf6b61bb424889accc2f1b75c3857d.jpg)
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/14f20344dd5f46ce82941f1c2a9c4f69.jpg)
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/a2b8fc275a234818ae829941aefe2298.jpg)
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/9b5cf73b7bb64bafb5fc635fe9d7d59d.jpg)
在"构建后操作"选择"Upload to fir.im",并添加api token并校验
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/bde3ee32f8d849719b433956055f043d.jpg)
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/a501626f97684053b0fb6865032dbbfd.jpg)
立即构建项目,成功之后
在你的Console Output里面有如下日志
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/d5d5e248f05a4a66a21b2a7454c70147.jpg)
Fir.im日志
Fir.im应用列表也可以查看到相关信息
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/2af2867a40b84f5b906ef9b6fc177ee8.jpg)
Fir.im应用列表
其余操作请参考Fir.im官网介绍(http://blog.fir.im/jenkins/)
7
蒲公英上传
与Fir.im不同,它是通过shell脚本执行post上传指令的
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/12add2e092314efcac4f3754791bd46b.jpg)
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/b1616a7d18264293804ebe39af8b4641.jpg)
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/acf96ebe09c34af7b9eaa3d55c801c0e.jpg)
上传App请求接口返回参数
这边怎么使用先放一放,待稍后介绍脚本如何使用时候再说
8
邮件通知(原生)
Jenkins自己也有一套邮件系统,但是我觉得这个与脚本发邮件相比,稍微略显鸡肋。为什么这么说?你想想看看,之前fir.im上传接口回调回来的数据怎样才能归档到邮件里面来呢?当然你说相关配置写死是可以实现的,这没错,但是你觉得这样好吗?
不管怎么说,如果要求没有那么高,仅仅是通知相关人员一下而已,这个还是有很大便利之处的
进入"系统管理"->"系统设置"->"Extended E-mail Notification",点下"高级"
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/d1b0bcb9418d4e249f60015f737b53de.jpg)
再去下方邮件通知配置,一样要点"高级"
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/641970fd19474228b79da850e1dc1682.jpg)
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/db2e265ba6404e81b1d4af92c50f17df.jpg)
点击测试,你应该可以收到相应邮件
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/e77b7e4552dc4756a88f3315a67ec5cd.jpg)
配置"构建后操作",把接收人邮箱还有邮件相关信息都写好。这里写什么都是无所谓的,保持html格式就行
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/ffc2281d41014f61b0a993bbbf9b4c37.jpg)
最终收到的效果也是很好的
![Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知](https://image.cha138.com/20210407/044342ae32e24225af8c17f2ace7e7b7.jpg)
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持续集成)