前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS之Travis CI自动分发到蒲公英、fir

iOS之Travis CI自动分发到蒲公英、fir

作者头像
BestSDK
发布2018-02-26 18:51:50
1K0
发布2018-02-26 18:51:50
举报
文章被收录于专栏:BestSDKBestSDK

懒是程序员的美德,作为程序员应该善用工具提高自己的工作效率。在我最早的时候,我是个“勤奋”的人,写好代码后,如果要给测试同学测试我的App,那么我大概会用XCode编译我的应用,然后打包签名再把ipa分发给测试,这一切在现在看来是多么的效率低下。

后来有了Testflight,简化了一部分我的工作。再后来国内也出现了优秀的工具,以蒲公英和fir为代表。在持续集成的时候结合这些分发渠道,可以大大的简化我们的工作。

Travis CI

详细的介绍请看它的网站,简单来说它是用来做持续集成的工具,可以为你自动构建、测试、打包等等,极大的简化了工作流程。它对Github的支持特别好,链接到你在Github上的项目以后,每当你把测试通过后的代码提交到master去,它会pull你的代码并按照你的要求构建执行。Travis还提供命令行工具,通过下面的命令安装。

gem install travis

配置你的Travis

要想它好好的为你工作,你得告诉它应该干些什么,这里需要用到它的配置文件。在你的项目根目录建一个名为 .travis.yml的文件。Travis会根据你在这个文件中的配置执行相应的操作,在整个build的生命周期里,你可以在不同的阶段做不同的操作,详细的说明在这里。下面以我的配置为例说明。

.travis.yml

这里面比较简单的有language和osx_image以及一些全局变量的设置,我就不阐述了。在before_install里,我安装了fir的命令行工具,这点我觉得fir做的确实还不错,一个命令就可以帮助我们上传应用。

接下来在执行script之前,需要对证书进行解密,因为我们需要在Travis上签名打包我们的应用。直接将证书放在repo里不是一个好主意,于是需要对证书进行加密,直接用openssl就好了。在before_script里面就需要对证书解密还原,这里可能大家会不知道$ENCRYPTION_SECRET是哪里来的。密码明文存放在配置里面不好,这时可以利用Travis的命令行工具在根目录执行下面的命令加密:

travis encrypt"{YourKey}={YourVal}" --add

加密之后就会在文件中看到有secure的字样。上图中可以看到,我存了5个密码在这里(因为后面会对证书等东西的密码进行处理),Travis拿到之后会知道怎样把密码取出来。

接下来会执行脚本add-key.sh,里面主要是导入私钥、证书等,内容如下图:

add-key.sh

通过上面的命令创建了一个名为ios-build的临时keychain,里面包含了所有证书。这里的KEY_PASSWORD也是如前面一样通过travis加密处理的变量。最后会把mobileprovision文件copy到Library对应目录下。

添加好了证书之后,你就可以构建你的应用了。iOS的App整个过程是分两步在走,第一步是生成应用的二进制文件,以app为后缀名(*.app)。接下来的一个步骤是对其进行签名,经过签名的应用才被认为是一个合法的应用,才会允许你分发给你的用户。

在这两个步骤当中,会涉及到不同的工具。第一步构建的时候有苹果的xcodebuild和facebook出的xctool可以选择。在Travis里使用的是xctool,当然你也可以使用xcodebuild,因为有时候xctool也并不是那么完美。第二步签名主要有两个工具可供选择,一个是xcrun,另外是一个是codesign,这里使用的是xcrun。

- xctool -workspace {YourProject}.xcworkspace -scheme {YourScheme} -sdk iphoneos -configuration Release CODE_SIGN_RESOURCE_RULES_PATH='$(SDKROOT)/ResourceRules.plist' OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO

上面的命令开始build这个项目,完了之后应该会在你的根目录下生成一个build目录,里面会包含一个子目录叫做Release-iphoneos,在它里面会有你的*.app文件。

构建好了之后要做的事情就是对应用进行签名分发,这部分的操作放在脚本sign-and-upload.sh里执行。

sign-and-upload.sh

这里面最主要的操作就是

xcrun -log -sdk iphoneos PackageApplication "$OUTPUTDIR/$APP_NAME.app" -o "$OUTPUTDIR/$APP_NAME.ipa" -sign "$DEVELOPER_NAME" -embed "$PROVISIONING_PROFILE"

签名之后生成ipa文件,这个也就是你打包分发给你的测试的东西啦。接着根据需要上传到自己的分发渠道,这里我选择的是fir和蒲公英两家。fir的很简单,一行命令就可以直接上传,蒲公英稍微麻烦点,需要用curl来上传你的ipa。

让Travis为你干活吧

配置好了以后,以后的事情简直就是轻松加愉快。每当有代码提交上去的时候,travis会得到通知开始对你的代码做持续集成,你在控制台上面可以看到每次集成所花费的时间,以往浪费的时间拿来享受一杯咖啡吧,等着travis变绿之后也就大功告成了。

结尾

总体来说Travis CI还是很方便的,但是它也有它的局限性。如果你的项目是放在github上的开源项目,它应该是你的最佳选择,而在通常我们的开发过程当中,用的更多的恐怕还是拿jenkins搭在自己的server上,总之根据实际情况进行选择。

参考链接:

https://www.objc.io/issues/6-build-tools/travis-ci/

http://docs.travis-ci.com/user/customizing-the-build/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-10-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BestSDK 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Travis CI
  • 配置你的Travis
  • 让Travis为你干活吧
  • 结尾
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档