基于Jenkins搭建自动化构建系统采坑记

4,466 阅读7分钟

为什么要做自动化构建

先说提测

客户端发版之前总要经过测试部门的各种测试,像我厂的流程是

  • 开发打测试包
  • 将测试包上传自己的内测平台(如果你们没有自己的内测平台也可以使用免费的平台如:https://fir.im)
  • 在测试的钉钉群组里通知测试部门或者发送邮件抄送测试部门
  • 测试部门测试并反馈问题(可以自己的反馈平台也可以用BugTags)
  • 开发人员修复问题并重复上述步骤

然后问题就来了,每次提测需要抽一个同学来做这些事情,并且跑自动化测试的这些过程是没办法在研发人员技术内测的时候就能提供测试报告的。

再说发版

我厂的渠道数量已经达到了100+,开发完新的业务需要全渠道发版的时候,还是需要单独抽一个同学出来跟进发版包,并且发版的流程更多。

  • 研发人员打渠道(100+)
  • 测试部门测试渠道包(各种验证:渠道号是不是正确等)
  • 研发人员将所有的渠道包上传内部文件存储服务器
  • 产品及商务部门从内部服务器拉去渠道,并完成发版
  • 发版邮件通知

然后问题又来了:

  • 怎样保证这位同学机器上的打包环境是正常的?会不会他在开发过程中改了系统的环境造成未知的漏洞?
  • 打包出来的apk文件是不是需要测试部门彻底过一遍?测试部门的人手如果不够怎么办?
  • 最关键的一点:打包过程中,这名同学的机器基本不能用作开发,因为gradle会把内存跟cpu用的很干净。

总结

本着繁重而重复的体力劳动交给机器做的原则,我们开始基于jenkins搞了一套自动化构建系统。这里我将构建过程中碰到的坑分享出来给大家,避免其他小伙伴重复入坑。

搭建Jenkins运行环境

下载并安装

  • 点击这里进入官方的下载地址,由于我的内部服务器装的是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配置

  • 源码管理配置。注意我用的是一个测试项目,如果你是第一次配置建议用这个测试项目做一下打包。不要贸然直接拉线上代码。(因为坑很多...)。测试项目git地址:https://github.com/weixinjie/android-crop.git。Credentials选项如果没有授权的花需要点击Add新增一个。

  • 构建配置,这里需要点击增加构建步骤按钮,选择Invoke Gradle script选项

注意,这里需要选择Use Gradle Wrapper选项,构建的时候Jenkins会自动去下载所需要的Gradle版本(保持科学上网状态),尽量避免使用Invoke Gradle,里面坑很多。Tasks里面写:clean assembleRelease(不懂gradle语法的自己去学吧)这句话的意思是打所有渠道的release版本的apk。

  • 增加构建后的步骤 将打出来的apk文件保存一下,注意用于存档的文件就直接写**/*.apk就行

配置邮件通知。新增Editable Email Notification的构建后步骤。图比较长,我截取了两张,需要配置的地方已经用红色标出

  • 配置完成,喜大普奔,点击保存。

开始自动化构建

  • 回到项目,点击立即构建,Jenkins会开始构建项目,并且在右下角的构建历史中新增一条构建历史

  • 点击某一条具体的构建历史,会出现该构建历史的详细内容,里面的Console Output选项卡可以查看构建的log

  • 构建完成之后,你配置的邮箱里面会收到构建通知.

写在最后

本篇是写给初次接触jenkins的小伙伴的,也是自己采坑的一次记录。很多高级的用法没有体现出来,比如触发器、上传ftp服务器、跑Lint检测、跑monkey等都没有体现出来。希望大家从本篇教程做一个延伸,继续探寻强大的Jenkins。

打个广告 我本人非常愿意参加很多技术沙龙等线下活动,因为很多干货可以帮我快速成长;公司有时候也会组织我们去参加技术分享会,but很多时候大咖们演讲的速度会很快,导致会后能吸收的营养并不多。所以我在github上开了一个新的分支,里面存放着我参加技术分享的会后ppt(当然,很多技术分享讲师的ppt是不公开的,那我就没辙了哈),大家可以fork一下,吸收一下里面的营养,一起进步哈。如果你也参加了很多技术分享,手里有很多会后ppt欢迎发到weixinjie1993@gmail.com我整理统一push上去,让更多人学习 项目地址

About Me

contact way value
mail weixinjie1993@gmail.com
wechat W2006292
github https://github.com/weixinjie
blog https://juejin.cn/user/3087084378665367