为什么要做自动化构建
先说提测
· 客户端发版之前总要经过测试部门的各种测试,像我厂的流程是
· 开发打测试包
· 将测试包上传自己的内测平台(如果你们没有自己的内测平台也可以使用免费的平台如:https://fir.im)
· 在测试的钉钉群组里通知测试部门或者发送邮件抄送测试部门
· 测试部门测试并反馈问题(可以自己的反馈平台也可以用BugTags)
· 开发人员修复问题并重复上述步骤
再说发版
我厂的渠道数量已经达到了100+,开发完新的业务需要全渠道发版的时候,还是需要单独抽一个同学出来跟进发版包,并且发版的流程更多。
· 研发人员打渠道(100+)
· 测试部门测试渠道包(各种验证:渠道号是不是正确等)
· 研发人员将所有的渠道包上传内部文件存储服务器
· 产品及商务部门从内部服务器拉去渠道,并完成发版
· 发版邮件通知
然后问题又来了:
· 怎样保证这位同学机器上的打包环境是正常的?会不会他在开发过程中改了系统的环境造成未知的漏洞?
· 打包出来的apk文件是不是需要测试部门彻底过一遍?测试部门的人手如果不够怎么办?
· 最关键的一点:打包过程中,这名同学的机器基本不能用作开发,因为gradle会把内存跟cpu用的很干净。
总结
本着繁重而重复的体力劳动交给机器做的原则,我们开始基于jenkins搞了一套自动化构建系统。这里我将构建过程中碰到的坑分享出来给大家,避免其他小伙伴重复入坑。
搭建Jenkins运行环境
下载并安装
· 进入官方的下载地址(https://jenkins.io/download/),由于我的内部服务器装的是windows系统所以我选择的是windows安装包。Linux Mac的安装方式大同小异。
· 安装的方式有两种: 1.直接下载可安装文件,双击安装即可,安装完毕之后jenkins会自动打开浏览器并定位到8080端口 2.下载.war的包,然后下载tomcat容器,将该war包拷贝到tomcat容器中然后启动tomcat。(这里不多说了,google一波都出来了)
初始化
安装完jenkins后,打开浏览器http://localhost:8080,会弹出初始化界面
· 按照提示的文件目录将管理员密码输入(嗯,聪明的你一看就知道这图是我网上盗的)
· 然后重点来了,正常来说会进入如下界面进入插件安装环节
如果有出现以下提示的同学,欢迎进入第一个坑
Offline
This Jenkins instance appears to be offline...(不啦不啦一堆),没错是因为你的服务器没翻q,需要自备梯子。(为了安全省事,备个梯子吧,大家都是搞开发的,没梯子怎么玩)。
· 安装 Gradle plugin,Git Parameter Plug-In,Email Extension Plugin以及Android Emulator Plugin插件
· Jenkins会提示你创建一个用户,按照提示操作就好。
· 喜大普奔,我们离自动化构建又近了一步,这时你会有如下的操作界面。忽略我已经创建好了的项目(打马赛克的地方)。
进行全局环境变量的配置
系统设置
打开系统管理-系统设置页面。这里我们重点设置一下邮箱,其他的可以使用默认的。
· Jenkins Location选项卡
注意:系统管理员邮件地址一定要设置,以后Jenkins构建的邮箱通知会以这个邮箱地址为发件人发送
· Extended E-mail Notification选项卡。因为我们安装了Extended E-mail Notification插件所以需要设置一下这个选项卡的内容。注意因为我们用的是阿里云的企业邮箱,所以smtp走的是阿里云的。smtp这块需要根据你们的具体邮箱具体设置。
· Android选项卡。这块需要设置一下Android SDK路径。我的SDK路径是我本机的,大家需要根据自己的具体路径具体设置。
· 完活,然后点击右下角的“保存”按钮。
系统工具配置
· JDK配置(老规矩,大家的具体路径需要具体设置)
· Git配置
· 点击右下角的“保存”按钮
新建项目,开始自动化构建
· 选择新建-构建一个自由风格的软件项目,选择确定,开始配置项目具体的设置
· General配置