我是怎么慢慢变懒的 : Jenkins + 蒲公英 | APP持續集成实践
- 2017-12-22 11:47:00
- IDO老徐 原創
- 17602
前言
此文來自一位程序猿的實戰總結,非常具備參考價值(當然,建議參考,不建議完全照搬,使用場景不同、需求不同,會有很大差異;如果你剛好想實施APP持續集成
,又沒有思路,此文是一篇非常不錯的文章;)
當然,如果你完全不知道Jenkins能做什麽事,有哪些適用場景,可以看看之前老徐的Jenkins普及文:Jenkins持續集成体系 | 最完整的介绍及资料
从Tester的角度,从老徐十年的职业经验,以及对测试职业后续的发展趋势,建议所有Tester去掌握整个持續集成体系。
關于懶惰
經常看到很多博文裏面講’懶惰’是一個優秀程序猿的良好品質,這一點我深以爲然,因爲在程序猿的工作中總是充滿了重複勞動,也許正是因爲這個原因,導致大部分程序猿慢慢變得懶惰,而那些沒變懶的程序猿他們慢慢滅絕了~~~。而對于懶惰這個詞,我們不能曲解它的意思,並不是怠倦、消沈的對待工作,而是當一個程序員遇到重複的工作時,懶惰的程序員首先想到的是我要開發出一個工具自動執行這些工作。
爲什麽需要工具
当 UI 妹子给你一大堆图片而没有给你加上 @2x 后缀时,看着妹子可怜的眼神,怎么忍心让妹子们返工,懒惰的程序员就在想了,这特么是一个循环重复的劳动,为啥不写个脚本自动给每张图片文件名加上一个 @2x 后缀呢,分分钟搞定,然后准时下班约会去了。。。。
所以很早之前我的第一个开源工具 dSYM 分析工具 就是这么来的,当我连在命令行中续修改了几个友盟统计后台收集到异常后,我发现这就是一个重复而且繁琐的劳动啊,所以我便花了两个多小时做了一个 APP 应用,这样以后我每次需要做的只是:1)打开应用,2)拖入 dSYM 文件 3)输入异常地址,便得到异常信息了。
而写这篇文章则讲述了我是如何一步一步从 1)手动打包 –> 2)Jenkins 打包,手动发布 –> 3)Jenkins 打包 + 蒲公英 分发 的。
起因
对于发包这个问题,相信是每个程序猿哥哥心中挥之不去的痛,而测试妹子们也在每次马上就发的承诺中得出一个结论 : “你是个大骗子”。
所以每次被测试妹子追着要测试包,产品经理说给我装一个开发中的新版本瞧瞧呗,后台哥哥说给我安装一个某某老版本的包调试一下啊。。。然后每次不得暂停下手中的工作,切换到某个版本,Archive。。。。终于有一次答应测试妹子吃饭前会给他们发包后,忙着忙着就忘掉直接去吃饭了,看着妹子 QQ 上发来各种鄙视的表情,这不是我想要的人生啊,我一定要改变在测试妹子心中的形象,所以自动化构建这件事情提上日程.
使用 Jenkins 半自动化
我直接选用了已经很成熟的 Jenkins 持續集成解决方案,至于如何配置就不做过多介绍了,网上有不少这类的文章(可以看看老徐之前普及文:持續集成之Jenkins _ 老徐先带你入个门)。有了 Jenkins 后,给我带来最便利的一点就是,每次打包的时候,直接在公司的 Mac 服務器 上进行操作,而我还可以继续进行手上的工作,打包完成后把 ipa 包发给测试,同时也教会了测试如何从 Jenkins 上下载已经打包好的 ipa 文件,就这样我可以随时在手机上打开公司内网的 Jenkins 打包,当我把这一切告诉测试妹子的时候,她用期望的眼神看着我说:“这是真的么。。。”
Jenkins + 蒲公英 升级
就这样用了一段时间,也没遇到什么问题,或许是比较爱折腾,我发现每次 Jenkins 打包好了之后,我还需要手动去下载,或者让测试他们下载,当测试拿到文件后,还需要将手机连到电脑用 iTunes 或者第三方工具安装文件,我想要是 Jenkins 打包完成后会自动通知测试更新并安装该多好,而且之前也听说过第三方的分发平台 “蒲公英”,于是我去蒲公英网站看了一番,很高兴的是他们开放上传 APP 和安装 APP 等 API,有了这个东西,我的想法便完全可以实现了:1)Jenkins 打包 2)打包成功后 IPA 文件上传到 Tomcat 服務器 3)通过 API 把 IPA 文件传给 蒲公英 4)上传成功后把安装地址通过邮件发送给测试。 5)测试直接在手机上打开地址安装。
1.IPA 文件上传到 Tomcat 服務器
由于每次 Jenkins 打包的时候,编译后的文件是放在项目根目录下的 build 文件夹里面,每次 build 的时候这个文件夹内的文件都会被覆盖,所以每次 build 后我都会通过 FTP 把 IPA 文件上传到 Tomcat 上备份,同时还可以方便提供给别人下载,比如在给测试发送蒲公英的安装地址时,同时也可以给出 IPA 下载地址。
* 开启 Mac FTP-server
Mac 电脑本身是支持 FTP 服务的,只不过系统默认关闭了,Mountain Tweaks 这款软件可以很方便的修改系统的一些设置,比如是否开启打开 Window 动画,是否显示用户的 Library 文件夹,其中有一个选项就是是否开启系统的 FTP-server 功能。
* 配置 Jenkins 的 FTP Server
Mac服務器支持 FTP-server 后,我在 Jenkins 上安装了 Publish Over FTP Plugin 这个插件,这个插件可以将指定的文件发送到选中的 FTP 服務器上去,安装完插件后,在 Jenkins 的系统设置中会多出一项 Publish over FTP 的设置,因为 Tomcat 和 Jenkins 是在一台电脑上,所以 Hostname 直接指向本地,Remote Directory 也直接指向 Tomcat 的 webapps 下对应 app 的目录。配置好后可以点 Test Configuration 测试一下,如果显示 success,则成功了。
* 在 Job 的设置里面指定上传到 FTP 的文件
Jenkins 配置好 FTP Server 后,接下来就需要在 Job 中去设置打包成功后把哪些文件上传到指定的 FTP Server 中去了。在 增加构建后操作步骤中 有一个 Send build artifacts over FTP 选项,这里首先需要选择我们之前配好的 FTP Server。Source files 是我们构建目录下 build 文件夹内所有的文件,Remove prefix设置为 build 是告诉插件创建路径的时候不要包含 build,Remote directory则是我们指定的 FTP Server 上需要创建的目录,这里我以 Jenkins 构建的版本号去创建文件夹,之后取文件的时候,路径便会很方便拼接。
2.通过 API 把 IPA 文件传给 蒲公英
打包成功了,并且文件也备份到 Tomcat 上去之后,接下来就需要编写脚本了,脚本需要的功能是:1)上传 IPA 文件到 蒲公英 2)发邮件通知测试。这两点通过脚本是很好实现的,如果想将脚本应用到自己的环境中,最主要的是如下这几行代码 :
uKey、file_name、_api_key、installPassword这四个值是根据自己的情况配置的。project_name的值很重要,涉及到很多地方:1)tomcat 的 webapps 目录下面要有 project_name 对应的目录,因为在获取ipa_file_tomcat_http_url 的时候,是需要 project_name的, 还有就是获取发给蒲公英的 IPA 文件时也需要知道project_name
接着就需要让 Jenkins 去执行这个脚本了,通过对 Jenkins 插件的搜索,找到一个叫 Post-Build Script Plug-in 的插件,功能官方介绍写的很清楚:PostBuildScript makes it possible to execute a set of scripts at the end of the build.。
安装完这个插件后,在 Job 的 增加构建后操作步骤 中会多出一个 Execute a set of scripts 的选项,这里我只配置了 Build steps 中的 Execute shell,让它用 Python编译器去执行项目根目录下的脚本,还有就是 Execute script only if build success 勾选上:
这样当 Jenkins 打包成功后,便会执行此脚本,最终达到了我的目的。
最終收到的郵件大概是這樣的:
如果是在手机上打开邮件的话,可以直接使用第三种方式:点我直接安装,这种方式最方便,其次是第二种,蒲公英在线安装,最后一种便是自己下载 IPA 包到本地,使用工具安装。
到这儿之前设想的都已经实现了,整个过程中从开发的角度来说,需要的只是点击一下 Jenkins 中的 立即构建 按钮,然后就继续做手头上的事情把!
總結
教科書上把會不會制造工具當做人和動物的根本區別,我覺得這也是判斷一個好程序員的標准之一,優秀的程序員總是會去尋找好的工具,或者自己去創造一些工具來提高自己的生産效率,他們通過工具把那些浪費在重複勞動上的時間花在了更有意義的事情上去。
任何工具出现的最初目的都是为了提高生产效率,很庆幸在 iOS 开发的这个圈子中有一大批的先驱者,他们创造并开源了很多优秀的工具,为这个环境奠定了一个良好的基础,所以在工作或生活中,多创造工具,让自己变得更懒,却更有价值!
老徐有說話:
不知道如上實戰文看完後,你的第一反應是什麽?
相信對很多同學非常有幫助,整體思路是沒有問題的,當然可以有更好的實現方式;可能也有很多同學感覺非常難,看不懂,又是API,又是PYTHON。
其實還好,接觸幾次就會了。
順便提一句,如上屬于APP測試資料範圍
如果你看到老徐的文章,會有印象,老徐之前分享過一份資料叫《APP測試流程及完整資料合集》,如有需要,可以回複“APP測試”自己獲取。
如上,摘錄自老徐的公衆號 。
详情,具体见公衆號。
IDO老徐
全网同名,个人IP公衆號
日更10年,每天 1 分钟、解决 1 个问题
職場、副業、輕創業、寫作、個人IP
公衆號、視頻號、小红书、知乎
長按/掃碼,關注IDO老徐
關注回複 401 送你「十年原創资料包」
聯系人: | IDO老徐 |
---|---|
Email: | 957863300@qq.com |
QQ: | 957863300 |
微信: | 957863300 |
微博: | isTester |
網址: | idoxu.com |
地址: | 中国 · 广东 · 深圳 |
來源備注:老徐博客