一個好用的持續構建平臺對于移動開發團隊來講非常重要,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。