一个好用的持续构建平台对于移动开发团队来讲非常重要,flow.ci提供了以SaaS的方式提供了简单易用的持续构建的方法,所以我简单尝试了一下如何打包及将包同步到fir.im上面。
flow.ci支持很多代码托管网站,其中当然包括github。通过github授权之后,就可以基于github上的项目创建flow.ci的项目。
iOS的构建环境目前只有Xcode 8可供选择。这里比较坑的是Xcode8位于/Applications/Xcode8.app/
目录,而有一些Swift modulemap会依赖/Applications/Xcode.app/
目录下的文件,这样就会导致编译失败。比如SQLite.swift
组件的modulemap就是这样的,它的README也要求Xcode的目录一定是/Applications/Xcode.app/
。
$ cat ./CocoaPods/iphoneos/module.modulemap
module CSQLite [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sqlite3.h"
export *
}
为了解决这个问题,我在编译之前加了一个脚本,专门把modulemap文件里面的/Applications/Xcode.app/
替换成/Applications/Xcode8.app/
。Mac的sed略坑。
sed -i .org 's#Xcode.app#Xcode8.app#' Pods/SQLite.swift/CocoaPods/*/module.modulemap
打包的时候需要配置好FLOW_IOS_COMPILE_WORKSPACE
和FLOW_IOS_COMPILE_SCHEME
。因为没有企业证书,我选择打一个App Store包。上传打包证书和provision profile也是一件非常轻松的事情。记得在Xcode里面要关闭Automatically manage signing
,这个选项默认都是开着的。
打完包之后可以将ipa上传到fir.im,所以在工作流里面增加一个上传的环节。
flow.ci的UI和交互都非常棒,因为可以定制工作流,所以可玩性相当高。通过添加system_profiler SPHardwareDataType
命令可知flow.ci用的是Mac mini。