开发技术交流知识积累gradle相关

Android持续集成:Jenkins+Github+蒲公英/F

2016-10-17  本文已影响2312人  皮球二二

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

Jenkins

持续集成

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

Jenkins

Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
根据官方定义,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. 输入密码,路径已经在下方红字部分给出,直接用记事本打开复制粘贴即可


    输入密码
    密码

    5.选择推荐配置即可


    安装
    正在安装
  5. 安装成功


    安装成功

初识Jenkins

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


    系统配置

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

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


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


    全流程可配置项
General

项目的基本信息

源码管理

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


源码管理
添加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"查看具体错误,错误都是在最底下的,一定要拉到页面最底下去查看,不然会出现误导
构建错误
构建成功,显示相应信息
构建成功
构建历史

Fir.im上传

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

蒲公英上传

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


上传App请求接口
上传App请求接口返回参数

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

邮件通知(原生)

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

邮件通知(python脚本)

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

python脚本构建

具体脚本

参考文章

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

上一篇下一篇

猜你喜欢

热点阅读