下面将会向你展示一件充满魔法与奇迹的事情,但愿你耐心看到最后android
若是你正在经历这样的烦恼:git
那么你是时候体验一下android的持续集成了。若是你还不知道什么是持续集成,不知道持续集成能为你干什么,不知道怎么完美的搭建一个持续集成的平台,那么下面跟着我开始走上android持续集成之路吧。github
持续集成是一种软件开发实践,对于提升软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。windows
持续集成是一种软件开发实践,它倡导团队开发成员必须常常集成他们的工做,甚至天天均可能发生屡次集成。而每次的集成都是经过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队可以更快的开发内聚的软件。
持续集成最核心的价值就是自动化,自动化完成包括合并代码、打包、测试和通知分发的一系列软件工程开始的操做。api
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专一于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展现项目构建的趋势和稳定性。浏览器
事实上,持续集成的工具并不仅是Jenkins这一个,除此以外还有好比travis ci。可是Jenkins因为支持的代码托管方式多,插件多并且各类教程都相对比较成熟,所以不少团队和公司都是使用Jenkins做为持续集成的工具。接下来主要谈一下基于Jenkins的Andriod持续集成。tomcat
因为我使用的是Mac,包括安装在内的下列说明都是以Mac做为示例(虽然使用Mac示例,可是实际上windows和Linux这些都是支持的,而且使用方式都相似)。安装Jenkins,Mac上有两种途径:服务器
上面两种方式我都试过,其实从简单快捷上我更加推荐使用pkg安装包进行安装(若是习惯使用brew的同窗请忽略这个)。可是在使用pkg包安装的时候建议自定义安装,以下图所示:并发
在启动Jenkins以后会提示安装插件,咱们能够选择安装默认的推荐插件,也能够自主选择。在刚开始的时候为了方即可以直接安装推荐的插件。等到整个Jenkins初始化成功以后再根据本身的须要选择适合的插件进行安装。这里有一些插件是推荐安装的:ssh
代码托管管理相关:
构建相关的插件
android相关的插件
打包通知相关插件
插件的安装能够在进入Jenkins控制台以后系统管理->插件管理进行安装,若是在安装的时候出现问题的话我么也能够把插件文件下载下来,再从本地进行安装。
jenkins插件下载地址
插件安装在前面说起过,安装插件主要有两种方式。
在"系统管理->Global Tool Configuration"路径下面,咱们能够配置咱们的jdk,以下图所示:
咱们能够选择安装或者配置本地的jdk的路径
跟配置jdk同样,gradle的配置也是在"系统管理->Global Tool Configuration"路径下面,以下图所示:
在"系统管理->系统设置->全局属性"里面设置android sdk的路径,以下图所示:
jenkins参数话构建跟咱们在android studio中设定buildtype、productflavor等等相相似,只是咱们能够设置更多的参数类型。而且这里定义的全部参数类型能够在下面的构建中的脚本直接使用。
这里要注意的是,当咱们绑定到相似gitlab、github、bitbucket之类的代码仓库的时候,访问这些仓库是须要权限的,也就是说须要绑定ssh key,这跟咱们将代码clone到本地进行操做的道理是同样的。添加认证的操做以下:
代码构建建议使用gradle脚本,由于这个咱们最熟悉,也最简单。在build的过程当中,咱们能够执行咱们的测试脚本,好比单元测试、ui测试之类的;也能够经过build生成对应的android包之类的。在这里定义的脚本可以访问咱们在前面设置的构建参数。以下图所示
上面的配置至关于执行脚本"./gradlew spoondebug"(若是咱们在打包的时候选择的是构建类型是debug类型的话)。里面的spoon是square公司推出的一个开源工具,支持和espresso的ui测试结合,并发的将测试用例分发到电脑链接的手机。感兴趣的能够去看一下spoon的使用方法,而且这个工具备gradle的插件。
上面的等同于咱们在命令行中执行"./graldew assembledebug",这个会进行编译打包操做。
团队合做,咱们能够在成功打包构建以后,将单元测试结果、打包结果经过诸如邮件、slack等渠道发送给团队每一个成员,让每一个成员掌握项目的构建状况。
这里推荐使用国外的一个slack的工具,功能很是全面,不只支持上传应用文件、聊天通知,并且还提供机器人api,本身定义机器人作一些酷炫的事情。好比我利用slack实现的一个打包机器人。
大概的流程就跟上面说的同样。由于Jenkins有很是丰富的插件,基本上面的每个环节都有丰富的插件能够帮助咱们完善构建过程,你们有兴趣的能够在Google上面搜索,也能够在底下评论你们一块儿探讨。基本上你能想到的事情,Jenkins都能自动化的帮你完成。
就像上面的最后一张截图那样,当你把Jenkins安装配置好以后,你就可以随时随地的使用你的手机向机器人发送一条指令,而后接下来神奇的事情发生了,Jenkins服务器就会开始"拉取远程代码更新->设定打包参数->参数化构建->单元测试->ui测试->打包->生成测试报告->上传安装包->通知团队成员"(而且这仅仅只是很是基本的事情)。
并无很神奇的魔法,只要动起手来,很快你也有本身的一个打包机器人,开始作各类酷炫的事情了。
由于上面的内容是我从新弄的一个,可能跟我以前作的时候有一些步骤细节我没有在上面说起,若是你对持续集成感兴趣欢迎评论一块儿探讨。若是你喜欢的话欢迎点赞收藏。也欢迎你们关注我。最后,感谢你宝贵的时间阅读这篇文章。