先如今,使用腳本打包弥虐,進行app的持續(xù)化集成已經成為常態(tài),
不用在耽誤時間進行打包的管理媚赖,
比較浪費研發(fā)的時間,打包的時候珠插,還不太好切換分支惧磺,
所以準備一臺低配置的mac mini ,
作為公司內網的一臺打包服務器捻撑,快樂的進行腳本打包吧
整體流程
物料準備
- 一臺Mac
打包服務器
磨隘,一般配置即可缤底,推薦二手MacMini
用自己開發(fā)的電腦也是可以,筆者就是用自己的電腦番捂,在打包過程中个唧,啟動Jenkins 服務,會占用cpu 較為嚴重设预,親測還好
iOS 無法在linux 上打包徙歼,原因是XCode 只能在OSX 系統(tǒng)上安裝,若非要在Linux 上實現鳖枕,可以建立節(jié)點魄梯,不過太復雜了
- 安裝 Java8 環(huán)境,最新版 Jenkins 運行在Java8 環(huán)境宾符,如果安裝多個Java 環(huán)境酿秸,也無妨
- XCode,ruby魏烫,fastlane 等iOS開發(fā)常見軟件
- 在打包機器上授權打包證書可信任辣苏,打包工程上配置release模式下打包環(huán)境
Jenkins 安裝&部署
homebrew 直接安裝最新版2.144
$ brew install jenkins
jenkins 常見命令
jenkins -h //啟動Jenkins
control + c //快捷鍵關閉Jenkins
配置jenkins 管理員賬號和密碼
打開瀏覽器,進入 http://localhost:8080/
如果沒有效果哄褒,看下shell 中Jenkins 的日志稀蟋,日志還是較為詳細的
根據網站提示,簡單配置就行读处,畢竟我們是局域網糊治,內網訪問下
配置完畢在jenkins工作目錄 /Users/XXXX/.jenkins
下 config.xml
文件會記錄登錄賬戶的信息
如果不小心忘記了密碼,還有很多方式可以找回罚舱,總是Jenkins 是一個很健全穩(wěn)定的網站
安裝Jenkins插件
點擊系統(tǒng)管理-管理插件-可選插件井辜,可以搜索插件,公司項目是托管在gitHub上的管闷,所以我選的插件有(用其他托管代碼的可以對應選擇插件)粥脚,
- GitHub
- GitHub API Plugin
- GitHub Branch Source Plugin
- GitHub Integration Plugin
- Xcode integration
后期做單元測試,還有其他很多好玩的插件相配合
打包Job 配置
點擊新建Item-輸入項目名(建議所有名統(tǒng)一用工程名包个,避免出現各種坑)-構建一個自由風格的軟件項目-確定
基礎配置 描述可以隨意填寫
-
源碼管理
-
參數化構建
打包腳本
#切換到當前的打包分支
git checkout $branch
#拉取fastlane 和 cocospod
bundle install
#拉取pod 庫
pod install --repo-update
#fastlane 打包腳本
fastlane beta
- 構建后操作
構建時可能會生成多個文件刷允,只將自己需要的文件做存檔
打開項目配置-> 構建后操作 -> Archive the artifacts
在存檔文件中輸入需要存檔的文件,多個文件以 “,“(逗號) 分割碧囊,存檔文件默認路徑為 WORKSPACE ,存檔文件的相對路徑既是 WORKSPACE 并且是以正則表達式路徑树灶、文件名去匹配需要存檔的文件
我構建的ipa 存放在 WORKSPACE目錄下,存檔文件寫為 */.ipa
-
常見打包日志糯而,分析構建流程
FastLane 腳本編寫
fastlane beta打包腳本示例
功能支持
- build 自動增1天通,并上傳github, 不使用時間戳,是因為可讀性較差
- 腳本提交pull request
- 打testflight 包熄驼,且自動上傳到testflight
淺析
lane :beta do
#build 版本號自動增1像寒,使用fastlane 自帶Action
increment_build_number
#指定工作目錄下當前工程
build_app(workspace: "Vite.xcworkspace", scheme: "Vite")
#上傳testflight烘豹,會使用fastlane的緩存配置,里面有上傳賬號的信息
upload_to_testflight
#將自增的版本號代碼诺祸,上傳到github倉庫
push_git
end
fastlane 有很多好玩的Action
其他
- mac電腦 固定ip
- mac 不要休眠
- 每日構建定時器打包携悯,小團隊感覺沒有必要,并且浪費磁盤空間筷笨,保存打包的符號表憔鬼,linkmap等重要文件
個人感悟
- 這種配置,相對比OSX Service 的XCode bot 打包服務器好用很多
- Jenkins 很強大奥秆,插件很好用
- Fastlane 越來越穩(wěn)定逊彭,功能也越來越健全