搭建 iOS 自动打包发布持续集成系统

概念

原先搭建这套东西其实没多少事,但是受人邀请,还是写篇文章防止后来人踏坑吧。
持续集成系统(CI)想必看文章的应该都知道是什么东西,应该都清楚,如果不太明白的,移步
https://en.wikipedia.org/wiki/Continuous_integration
总结起来其实也很简单: 把构建和发布的问题自动化、简单化。

你可以想象这么一个场景:

当你的代码写完后,敲入一个git push,CI 系统自动帮你compile/test/archive/publish 而你只需要坐在那边,喝一杯java就够了。

对于爱“偷懒”的程序员来说,这是十分惬意的事情,因为我们最自豪的就是解放自己的生产力,让自己不要花时间去做一些无意义的事情,既伤神又费力。

安装Gitlab

当然,在当今的时代,我们拥有docker这种神器,其实安装这件事情,也已经很傻瓜化了。
OK,那么简单几行命令搞定

docker pull gitlab/gitlab-ce
docker run -d -P gitlab/gitlab-ce
如果需要进行端口映射,请参考-p参数

当你配置好之后,访问你的母鸡地址,出现这个页面就是部署好了,然后就是注册和登陆的事情。

超级产品经理
method
ad-hoc

执行完xcodebuild 就得到了我们的ipa文件,如果是手工敲命令的话,就是这么几个步骤。

集成到Gitlab

那么如何让CI跑这些命令呢?这时候我们就需要使用Gitlab CI中的.gitlab.yml这个文件了,Gitlab只要检测到有这个文件,就会开始构建你的项目,具体的使用说明可以看这里:
http://docs.gitlab.com/ce/ci/yaml/README.html

那么贴一个我的样例

variables:
PRERELEASE_SCHEME: "SegmentFault_Alpha"
CODE_SIGN_IDENTITY: "xxxxxx"
PROVISIONING_PROFILE: "xxxxx"
LANG: "en_US.UTF-8"

stages:

  • archive
  • upload

archive:
stage: archive
script:

  • pod install
  • carthage update --platform iOS
  • xctool -workspace SegmentFault.xcworkspace -scheme $PRERELEASE_SCHEME archive -archivePath ./build/SegmentFault.xcarchive
  • "xcodebuild -exportArchive -archivePath ./build/SegmentFault.xcarchive -exportPath ./build -exportOptionsPlist ./ExportOptions.plist CODE_SIGN_IDENTITY=\"$CODE_SIGN_IDENTITY\" PROVISIONING_PROFILE=\"$PROVISIONING_PROFILE\""
    only:
  • fir
    artifacts:
    expire_in: '1 day'
    paths:
    • ./build/$PRERELEASE_SCHEME.ipa
      upload:
      stage: upload
      only:
  • fir
    script:
  • fir publish -T xxxxxx -c ./CHANGELOG ./build/$PRERELEASE_SCHEME.ipa
    dependencies:
  • archive
    这里我们看到stages总共做了2个任务archive和upload,
    我在archive的定义中,执行了4条命令,分别是pod相关,carthage相关,然后是xcodebuild相关命令进行打包,iOS程序员应该都知道pod和carthage吧,是在打包前给我们安装依赖的,依赖安装好了才能构建,这是常识。

在这个步骤完成之后,我们执行upload任务,就是调用fir-cli这个工具,把我们的应用发布到fir.im上,给测试人员分发测试。

结语

好了,我终于从在Xcode中进行打包,导出后到fir.im上进行上传ipa操作,并写Change Log任务这么一系列很繁琐的工作中解脱了,以后我就只需在fir这个分支上进行一次push,那么所有的工作就都做完了,这就是CI的魅力。

赶紧试试吧~

关键字:ios, ci, fir.im


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部