基于Jenkins的Andriod持续集成之路

下面将会向你展示一件充满魔法与奇迹的事情,但愿你耐心看到最后android

若是你正在经历这样的烦恼:git

  • 日复日一日地被leader或者qa人员催要手机安装包
  • 单调乏味的手动执行着一个又一个测试用例
  • 由于打包、测试等带来的各类效率低下问题

那么你是时候体验一下android的持续集成了。若是你还不知道什么是持续集成,不知道持续集成能为你干什么,不知道怎么完美的搭建一个持续集成的平台,那么下面跟着我开始走上android持续集成之路吧。github

持续集成是一种软件开发实践,对于提升软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。windows

什么是持续集成(Continuous integration)

持续集成是一种软件开发实践,它倡导团队开发成员必须常常集成他们的工做,甚至天天均可能发生屡次集成。而每次的集成都是经过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队可以更快的开发内聚的软件。
持续集成最核心的价值就是自动化,自动化完成包括合并代码、打包、测试和通知分发的一系列软件工程开始的操做。api

Jenkins 简介

Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专一于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展现项目构建的趋势和稳定性。浏览器

事实上,持续集成的工具并不仅是Jenkins这一个,除此以外还有好比travis ci。可是Jenkins因为支持的代码托管方式多,插件多并且各类教程都相对比较成熟,所以不少团队和公司都是使用Jenkins做为持续集成的工具。接下来主要谈一下基于Jenkins的Andriod持续集成。tomcat

Jenkins安装

因为我使用的是Mac,包括安装在内的下列说明都是以Mac做为示例(虽然使用Mac示例,可是实际上windows和Linux这些都是支持的,而且使用方式都相似)。安装Jenkins,Mac上有两种途径:服务器

  • Jenkins官网下载安装包(能够选择war包,这个须要将war包配置到tomcat服务器下,也能够选择Mac系统的pkg安装包,简单快捷)
  • 经过 brew 安装 “brew install jenkins”

上面两种方式我都试过,其实从简单快捷上我更加推荐使用pkg安装包进行安装(若是习惯使用brew的同窗请忽略这个)。可是在使用pkg包安装的时候建议自定义安装,以下图所示:并发


这样子安装以后,能够避免由于Jenkins安装在共享目录而缺少对当前用户的目录的读写权限,形成各类惨痛的bug。(当时本身就是由于这个缘由一直找不到android sdk路径)
上面的安装步骤结束以后,就能够在浏览器上访问咱们的Jenkins了,默认端口号就是8080.因此咱们只须要在浏览器输入 " http://localhost:8080" 就能够访问了。

插件安装

在启动Jenkins以后会提示安装插件,咱们能够选择安装默认的推荐插件,也能够自主选择。在刚开始的时候为了方即可以直接安装推荐的插件。等到整个Jenkins初始化成功以后再根据本身的须要选择适合的插件进行安装。这里有一些插件是推荐安装的:ssh

  • 代码托管管理相关:

    • git/svn
    • 代码托管仓库相关的插件,好比GitHub、bitbucket、gitlab等等
  • 构建相关的插件

    • gradle/ant/maven
    • Dynamic Parameter Plug-in:支持动态参数构建插件
    • Extended Choice Parameter Plug-In:支持参数化选择配置的插件
  • android相关的插件

    • Android Emulator Plugin
    • Android Lint Plugin
  • 打包通知相关插件

    • Slack Upload Plugin
    • Slack Notification Plugin:结合slack的使用
    • email拓展的插件

插件的安装能够在进入Jenkins控制台以后系统管理->插件管理进行安装,若是在安装的时候出现问题的话我么也能够把插件文件下载下来,再从本地进行安装。
jenkins插件下载地址

Jenkins使用


上面就是Jenkins初始化以后的控制台页面。一般进入Jenkins以后,要作的事情主要包括:

  1. 安装所须要的插件
  2. 配置所须要的环境参数
  3. 配置项目

插件安装

插件安装在前面说起过,安装插件主要有两种方式。

  • 一种是在"系统管理->插件管理->可选插件"目录下选择须要的插件安装。

  • 一种是在"系统管理->插件管理->高级"目录下选择安装本地下载的

环境参数配置

配置jdk

在"系统管理->Global Tool Configuration"路径下面,咱们能够配置咱们的jdk,以下图所示:

咱们能够选择安装或者配置本地的jdk的路径

配置gradle

跟配置jdk同样,gradle的配置也是在"系统管理->Global Tool Configuration"路径下面,以下图所示:

配置android sdk路径

在"系统管理->系统设置->全局属性"里面设置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测试->打包->生成测试报告->上传安装包->通知团队成员"(而且这仅仅只是很是基本的事情)。

并无很神奇的魔法,只要动起手来,很快你也有本身的一个打包机器人,开始作各类酷炫的事情了。

写在后面

由于上面的内容是我从新弄的一个,可能跟我以前作的时候有一些步骤细节我没有在上面说起,若是你对持续集成感兴趣欢迎评论一块儿探讨。若是你喜欢的话欢迎点赞收藏。也欢迎你们关注我。最后,感谢你宝贵的时间阅读这篇文章。

相关文章
相关标签/搜索