Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知

在公司的内部分享会上,无意间得知其他部门已经在1年多前完成了持续集成的功能,心里面着实有些按捺不住啊。其实这个问题在3-4年前公司搞后台开发技术的同事就已经问过我相似的问题,当时我觉得相当的天方夜谭,现在看看当时的自己真是too young too native

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 Jenkins

持续集成

持续集成是一种软件开发实践。团队开发成员经常集成它们的工作,大多数成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
持续集成的价值在于

  • 减少风险
    一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况
  • 减少重复过程
    节省时间、费用和工作量
  • 任何时间、任何地点生成可部署的软件
    可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。
  • 增强项目的可见性
    持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。

Jenkins

Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
根据官方定义,Jenkins有以下的用途:

  • 构建项目
  • 跑测试用例检测bug
  • 静态代码检测
  • 部署

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 IOS中Jenkins流程

蒲公英

蒲公英全方位帮助开发者轻松内测应用。

Fir.im

fir.im为开发者提供测试应用极速发布,应用崩溃实时分析、用户反馈收集等一系列开发测试效率工具服务,帮助开发者将更多精力放在产品的开发与应用的优化上。

Jenkins的安装

由于需要执行Shell脚本,所以本篇文章的运行环境为Mac OS,如果你希望在linux环境下搭建持续集成环境进,同样可以按照本篇文章的流程进行部署

  1. JDK安装、Android SDK安装、Gradle安装、Tomcat安装
    这些没什么好说的了吧,只要你会开发Android,这些对你来说都是小菜一碟,特别注意不要忘记对环境变量进行配置,不然后续会有问题
  2. 下载war包,选择最新的Release版本
  3. 将war放到tomcat的webapps目录下,然后启动tomcat。启动完成之后打开localhosrt:8080/jenkins页面即可进行安装
  4. 输入密码,路径已经在下方红字部分给出,直接用记事本打开复制粘贴即可

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 输入密码
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 密码

    5.选择推荐配置即可

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 安装
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 正在安装

  5. 安装成功

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 安装成功

初识Jenkins

  1. 系统配置
    在Jenkins左侧有一下几个配置项

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 系统配置

    这里主要提及一下的是系统管理。这里面有插件管理、用户管理、脚本管理等功能,在后续的使用过程中我们会对这里有一些操作。
    涉及到本文中Android构建的插件主要是Gradle plugin、Git plugin、SSH Credentials Plugin等,这些在安装过程中已经覆盖了

  2. 新建项目
    点击“新建”按钮并选择“构建一个自由风格的软件项目”,完了之后会进入到任务的配置界面,配置好之后任务会出现在如上图右边的任务列表中。

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 新建项目
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 新建完成

  3. 任务配置
    选择新建类型之后,就会弹出任务配置页面。你随时可以通过项目中的“配置”按钮对此进行修改

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 全流程可配置项

General

项目的基本信息

源码管理

Jenkins支持使用版本管理工具来进行源码管理,这里我选择使用Git。在Repository URL中输入项目地址,这里我用的是我自己GitHub上的一个工程作为Demo的源码。点击Add按钮添加一下我Github的用户名及密码便于Jenkins自动去下载代码。最后选择构建的分支,我这里使用的是master分支。

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 源码管理

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 添加Github账号

构建触发器

Jenkins触发的时机配置,如果都不选,则为手动构建,需要点击“立即构建”按钮才构建。

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 构建触发器

这里简单介绍一下各个功能

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+邮件通知》 构建

构建后的操作

可以让Jenkins在构建完之后执行诸如邮件通知等功能,这个我们稍后再说
这里我仅仅设置了存根的位置

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 构建后的操作

开始构建

配置完毕之后,我们需要在jenkins的workspace下找到自己的工程,把local.properties放进去,不然gradle编译的时候找不到SDK的路径。之后我们点击立即构建

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 构建中

各个颜色代表的意义如下:

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》

天气的晴雨表代表了项目的质量,这也是Jenkins的一个特色。

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》

出错之后,选择”Console Output”查看具体错误,错误都是在最底下的,
一定要拉到页面最底下去查看,不然会出现误导

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 构建错误

构建成功,显示相应信息

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 构建成功

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 构建历史

Fir.im上传

打包成功了,下面就到了部署的环节了
Fir.im非常简单,因为它提供一个插件,把整个上传功能都帮你实现好了

  • 下载插件
  • 进入”系统管理”->”管理插件”->”高级”->”上传插件”

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》

  • 在”构建后操作”选择”Upload to fir.im”,并添加api token并校验

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》

  • 立即构建项目,成功之后
    在你的Console Output里面有如下日志
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 Fir.im日志
    Fir.im应用列表也可以查看到相关信息
    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 Fir.im应用列表
    其余操作请参考Fir.im官网介绍

蒲公英上传

与Fir.im不同,它是通过shell脚本执行post上传指令的

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 上传App请求接口

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 上传App请求接口返回参数

这边怎么使用先放一放,待稍后介绍脚本如何使用时候再说

邮件通知(原生)

Jenkins自己也有一套邮件系统,但是我觉得这个与脚本发邮件相比,稍微略显鸡肋。为什么这么说?你想想看看,之前fir.im上传接口回调回来的数据怎样才能归档到邮件里面来呢?当然你说相关配置写死是可以实现的,这没错,但是你觉得这样好吗?
不管怎么说,如果要求没有那么高,仅仅是通知相关人员一下而已,这个还是有很大便利之处的

  • 进入”系统管理”->”系统设置”->”Extended E-mail Notification”,点下”高级”

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 Extended E-mail Notification

  • 再去下方邮件通知配置,一样要点”高级”

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 邮件通知

  • 最后必须设置”Jenkins Location”。上面只是配置邮件服务器地址、账号和密码,但是Jenkins不知道采用哪个邮箱去发送,系统管理员邮件地址必须与上图设置的用户保持一致。

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 Jenkins Location

  • 点击测试,你应该可以收到相应邮件

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 测试邮件配置

  • 配置”构建后操作”,把接收人邮箱还有邮件相关信息都写好。这里写什么都是无所谓的,保持HTML格式就行

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 Editable Email Notification

    最终收到的效果也是很好的

    《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 Email收到的格式

邮件通知(python脚本)

有了脚本,就等于一切尽在我手中。我在网上找到很多关于Jenkins打包的脚本,全是IOS的相关处理,android反正我是没有找到,那么我就直接拿IOS的改改就行了。IOS的2个地址是jenkins-pgy-pythonJenkinsTemplateForApp。这里我就不贴代码了,我就简单说一下思路,后面我会把代码一起放出。这边结合到蒲公英的上传脚本,先将图片上传,拿到返回的json值,然后获取到git上相关commit信息,一并通过smtp邮件方法进行发送

《Android持续集成:Jenkins+Github+蒲公英/Fir.im+邮件通知》 python脚本构建

具体脚本

参考文章

百度百科-持续集成
百度百科-Jenkins
Jenkins+Gradle实现Android自动化构建
jenkins配置自动发送邮件
fir.im Jenkins 插件使用方法
使用jenkins上传到蒲公英(Android)

    原文作者:皮球二二
    原文地址: https://www.jianshu.com/p/b6930ba67c5e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞