持续集成实施(一)
其实在前期已经投入精力对持续集成进行部署,但是真正的困难不是部署应该走的方向,却是过程中发生的一个个的“坑”,如何对待这些拦路虎并跨过他们,记述一二。
一、iOS集成
之前使用gym打包为这次iOS的集成提供了方便之门,但是这次需要注意的是:
1、需要分别打inhouse,adhoc,appstore的包
2、inhouse和adhoc作为内测,需要更换显示图标,加上内测字样。
3、inhouse包需要上传蒲公英(之前选择的Fir因为收费放弃),需要跟slack对接,并且自动推送。
4、appstore需要上传TestFlight
当然已经全部实现了,把其中遇到的波折一项项列一下。
(1)分别打三种包,对证书和rightProvision
了解的不够透彻?
解决:把三种证书都从开发那里要过来,然后将自己的APPLE ID升级到开发者Admin
状态,就具有了三种证书的使用权限,然后跟开发一一对接,对每个包分别对应的证书了解并整理,打包的时候一一对应上就好。这个过程中,收获的是对xcodebuild的method参数有更深的了解,其实inhouse,adhoce,appstore分别对应的打包方式是enterprise
,ad-hoc
,app-store
。
(2)需要更换inhouse的图标?
解决:之前想通过是打包的时候指向不同的target
,后来的解决方案是直接替换。
但是需要注意的是像素和尺寸需要保持一致,设计同学的帮忙很必要。
(3)之前上传Fir,后来因为Fir每日超过下载量需要收费,决定更改内测分发平台。
解决:之前是想通过上传公司内部服务器,然后给出外网链接,然后分发下载,后来因为感觉进入到下载页面以后没有关于ipa各种信息的介绍,比如build_version和build_number等。
但是要记录一下用ftp上传的时候由于是匿名上传,之前尝试出现各种错误,因为能力不够经验缺少的原因吧,后来用python实现上传ftp。
其实之前放弃蒲公英是因为蒲公英上传之后的api返回值有一个特点,生成的二维码是固定不变的,但是下载的短链接网址是跟着其中的key字段改变的,经过仔细对比发现appShortcutUrl
字段不会变化。自然有了对策。实现方式,自己拼接:
(4)和slack对接
解决:其实我觉得slack真的非常好用,因为它提供了各种整合持续集成的api,这里特别佩服我们老大对这块内容的重视,slack和jenkins集成非常方便。只是网速有点不靠谱。
slack api地址:https://api.slack.com/docs/message-guidelines
然后构造请求,发送即可,详细不表。
(5)将appstore的包上传TestFlight
解决:之前安装testflight,一直遇到的问题是会有一个类似如下的报错:from /usr/local/bin/fastlane:23:in '<main>'
,其实一条命令解决了,sudo gem uninstall bundler
,其实这是fastlane的bug。
用pilot可以上传到TestFlight,
二、Android集成
安卓打包更简单一点,但是一上来的错误就弄懵懂了我,因为对安卓平台的确接触不多。
(1)gradle version is 2.14.1,Current Version is 2.9。
解决:最后很简单就实现,选择jenkins构建grale脚本中,Use Gradle Wrapper,即可。
先写这么多,因为发现安卓又报错了,去解决问题了。。。