一個好用的持續(xù)構(gòu)建平臺對于移動開發(fā)團(tuán)隊來講非常重要,flow.ci提供了以SaaS的方式提供了簡單易用的持續(xù)構(gòu)建的方法,所以我簡單嘗試了一下如何打包及將包同步到fir.im上面分瘦。
flow.ci支持很多代碼托管網(wǎng)站,其中當(dāng)然包括github燎斩。通過github授權(quán)之后辖佣,就可以基于github上的項目創(chuàng)建flow.ci的項目。
iOS的構(gòu)建環(huán)境目前只有Xcode 8可供選擇谴咸。這里比較坑的是Xcode8位于/Applications/Xcode8.app/
目錄轮听,而有一些Swift modulemap會依賴/Applications/Xcode.app/
目錄下的文件,這樣就會導(dǎo)致編譯失敗岭佳。比如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
鲫凶。因為沒有企業(yè)證書,我選擇打一個App Store包衩辟。上傳打包證書和provision profile也是一件非常輕松的事情螟炫。記得在Xcode里面要關(guān)閉Automatically manage signing
,這個選項默認(rèn)都是開著的艺晴。
打完包之后可以將ipa上傳到fir.im昼钻,所以在工作流里面增加一個上傳的環(huán)節(jié)。
flow.ci的UI和交互都非常棒封寞,因為可以定制工作流然评,所以可玩性相當(dāng)高。通過添加system_profiler SPHardwareDataType
命令可知flow.ci用的是Mac mini狈究。