構(gòu)建作為CI中重要且不可缺少的環(huán)節(jié)之一稚叹。構(gòu)建自動化不管是對移動端開發(fā)還是測試開發(fā)來說帶來的效率的提升還是很明顯的。之前我們是存在者一套基于XcodeBuild的shell打包腳本的奥洼。一套流程下來可以完成構(gòu)建,上傳蒲公英測試琳猫。由于多證書管理的繁瑣以及配置的可擴展性。我們最終選擇Fastlane進行自動化構(gòu)建的優(yōu)化。站在巨人的肩膀上般卑。我們可以更加的高效。
文章主要是講解實現(xiàn)的思路妥泉。一些工具的安裝還需自行g(shù)oogle.
Jenkins
jenkins是構(gòu)建的核心工具椭微。它觸發(fā)著整套的構(gòu)建流程。一整套的jenkins包含的以下的配置過程:
1.General(概述)
主要是介紹項目整體的構(gòu)建配置盲链。這里面最常用的是This project is parameterized和Throttle builds:
- This project is parameterized(參數(shù)化構(gòu)建):讓項目的構(gòu)建參數(shù)可配置化蝇率。例如添加git paramer讓我們可以選擇指定的分支進行構(gòu)建迟杂。
-
Throttle builds:設(shè)置構(gòu)建的數(shù)目和時長。
屏幕快照 2019-10-21 上午11.30.11.png
2.Source Code Management(源代碼的管理)
通過代碼版本工具git等將遠程代碼倉庫和jenkins進行關(guān)聯(lián)本慕。將在本地拉取一個全新的倉庫進行代碼的管理排拷。這里需要注意的項:
- Repositories:這里進行關(guān)聯(lián)倉庫設(shè)置。
-
Branches to build:分支進行構(gòu)建锅尘。我們可以固定需要構(gòu)建的分支监氢。也可以在上一步中參數(shù)化配置中通過${branchName}獲取分支構(gòu)建。
屏幕快照 2019-10-21 上午11.40.05.png
3.Build Triggers(構(gòu)建觸發(fā))
設(shè)置自動構(gòu)建的觸發(fā)條件藤违,webhook是一個很好的觸發(fā)器浪腐。可以在我們每次push代碼到遠程倉庫的時候觸發(fā)構(gòu)建的流程顿乒。
4.Build Environment(構(gòu)建環(huán)境)
構(gòu)建環(huán)境的設(shè)置
5.Build(構(gòu)建)
這里進行構(gòu)建议街,構(gòu)建的方式可以使用自帶的xcode插件構(gòu)建,也可以使用擴展性更強的自定義打包腳本構(gòu)建璧榄。下面fastlane就是腳本的一種特漩。
6.Post-build Actions
配置構(gòu)建后的行為
Fastlane
通過對jenkins的配置我建立了代碼構(gòu)建觸發(fā)的條件后,我們需要開始對代碼進行打包骨杂。之前我們說過打包可以使用自定義的shell,python還有fastlane.其實本質(zhì)都是使用了xcodeBuild這個命令行工具實現(xiàn)的涂身。我們這里使用fastlane來快速的配置develop的打包工具。
1.fastlane init
切換進入jienkin/workspace下的項目的根目錄下執(zhí)行該命令搓蚪。
這里根據(jù)需要有4個選項可選蛤售。我們這里選擇4進行自定義。然后會在項目的根目錄下生成一些文件妒潭。
./fastlane/Fastfile文件是我們打包的可配置項:
這些就是生成ipa的一些配置項悍抑。有些是可以省略的。參考文檔building這里有些配置是因項目而已的杜耙。比如我們的項目是存在多targe生成多個product的需求。所以這里的scheme需要動態(tài)可配拂盯。我們的環(huán)境變量支持多套的佑女。所以我們讓configuration動態(tài)可配。 export_options中需要注意的是如果項目中存在著share擴展谈竿。因為它的獨立存在团驱。這里導(dǎo)出的時候同樣需要我們提供share的profile文件。
2.Build
通過上面的配置空凸,我們基本上是可以導(dǎo)出ipa了嚎花。
cd .jenkins/workspace/xxx
fastlane custom_lane
build只是fastlane中的一些。我們還可以在build的前后進行些其他的配置操作呀洲。其中最靈活的是fastlane的插件紊选。我們可以通過安裝ipa上傳蒲公英的插件上傳adHoc包啼止。
Jenkins配置fastlane
有了上面的fastlane的Build腳本。把它集成進jenkins就簡單了兵罢。以execute shell的形式執(zhí)行fastlane的腳本基本上就可以實現(xiàn)構(gòu)建到上傳ipa的蒲公英的流程献烦。
目前項目因為存在多scheme,多環(huán)境變量卖词,多branch等可配的情況巩那。這里我們以多xcodeBuildconfig,branchs為例配置參數(shù)化構(gòu)建。
我們配置了Git Parameter參數(shù)此蜈。如果沒有找到請到j(luò)enkins的插件中下載安裝即横。XCodeBuildConfig配置了編譯的環(huán)境變量。然后需要將參數(shù)傳到腳本中:
branch指定我們拉取的分支裆赵,XCodeBuildConfig指定編譯的環(huán)境變量东囚。
最后指定分支和環(huán)境進行參數(shù)化構(gòu)建。
通過以上的步驟快速搭建了iOS的自動化構(gòu)建流程顾瞪。我們選擇性的利用jenkins和fastlane的插件可以做更多的事情舔庶。感興趣的繼續(xù)探索吧。后面我會繼續(xù)補充陈醒。