上一篇:iOS打包自動化實踐(一)
把打包項目遷移到Jenkins遠程機器上渠驼,并增加自動上傳發(fā)版文案的功能迷扇。
準(zhǔn)備工作
- 一臺遠程Mac機器,并在這臺CI機器上安裝Jenkins器一,具體安裝步驟見:Jenkins安裝祈秕。
- 遠程控制:Mac自帶遠程功能隘庄,使用十分簡單丑掺。遠程控制
- 在CI機器上安裝fastlane。
- 在CI機器上配置打包證書和描述文件街州。
- 在CI機器上跑一遍自動打包上傳腳本唆缴,確認機器配置沒有問題。
Jenkins配置
下載好jenkins的war包之后艳丛,在遠程機器的shell中執(zhí)行命令:
java -jar your/jenkins/path/jenkins.war --ajp13Port=-1 --httpPort=9090
命令執(zhí)行成功后氮双,在本地機器輸入CI機器的IP + 端口9090戴差,例如你的CI機器IP是192.168.1.1铛嘱,那么就在瀏覽器中輸入:192.168.1.1:9090墨吓。如果機器和Jenkins都配置好了,那么你就會看到如下頁面:
- 首先:新建任務(wù)-構(gòu)建一個自由風(fēng)格的軟件項目,然后進入任務(wù)配置界面谐丢。
- 配置源碼:在"源碼管理"tab中選擇Git乾忱,然后填寫項目的Git地址(http),并配置Credentials(使用username和password即可)窄瘟。在"Branches to build"欄目中填寫需要build的分支名趟卸。
- 填寫構(gòu)建腳本:在"Execute shell"中,把上篇文章調(diào)試成功的shell腳本復(fù)制粘貼進去(注意:腳本默認目錄是項目根目錄)蹄葱,腳本如果之前寫了絕對路徑需要做一些修改图云,建議使用"pwd"命令獲取項目根目錄竣况,然后拼接相對路徑丹泉。
到這里項目的基本配置就結(jié)束了摹恨,build一下試試晒哄,順利的話就可以成功在Jenkins上完成自動打包和上傳工作了。
上傳發(fā)版文案功能
fastlane的deliver命令除了上傳IPA包勋陪,還有上傳icon诅愚,發(fā)版文案违孝,app信息等功能雌桑。這個功能的實現(xiàn)類似Git,需要首先把后臺的數(shù)據(jù)下載到本地校坑,然后修改需要修改的文件耍目,然后上傳即可邪驮。詳細步驟:
1毅访、 修改配置:
在Jenkins任務(wù)配置界面喻粹,選擇"General-參數(shù)化構(gòu)建過程-添加參數(shù)", 比如你的項目有簡體中文和繁體中文國際化語言,就添加兩個文本參數(shù)草巡,分別命名為release_notes_zhHans和release_notes_zhHant.
保存配置守呜,任務(wù)的"Build"會變成"Build with Parameters", 點擊后界面如下:
2、 在Execute shell中修改腳本:
在fastlane deliver命令之前增加以下命令。
#下載metadata弛饭, 包括icon(目前用不到)和各本地化發(fā)版文案。
fastlane deliver download_metadata\
--username ${user_name}\
--app_identifier ${bundle_id}\
--force true
#簡中萍歉,繁中侣颂,發(fā)版文案路徑
zhHans_notes_path="./fastlane/metadata/zh-Hans/release_notes.txt"
zhHant_notes_path ="./fastlane/metadata/zh-Hant/release_notes.txt"
if [ -n "$release_notes_zhHans" ]; then
echo "$release_notes_zhHans" > $zhHans_notes_path
fi
if [ -n "$release_notes_zhHant" ]; then
echo "$release_notes_zhHant" > $zhHant_notes_path
fi
"fastlane deliver download_metadata"命令的作用是把目前iTunesConnect后臺的數(shù)據(jù)下載到本地,默認路徑是"./fastlane/metadata"枪孩。我們在"參數(shù)化構(gòu)建"中增加的參數(shù)可以在"Execute shell"中作為變量直接使用憔晒,因此"$release_notes_zhHans"和"$release_notes_zhHant"就能取到我們填寫的簡中和繁中發(fā)版文案,判斷不為空時蔑舞,使用"echo"命令把他們填寫在各自語言目錄下的release_notes.txt文件中即可拒担。
3、修改deliver命令:
刪掉skip_metadata參數(shù),即:
#上傳IPA到App Store Connect
fastlane deliver\
--username ${user_name}\
--app_identifier ${bundle_id}\
--app ${app_id}\
--ipa ${ipa_path}\
--skip_screenshots true\
--app_version ${app_version}\
--force true
這里的app_version也可以通過參數(shù)化構(gòu)建的方式添加參數(shù)掏婶,每次構(gòu)建之前填寫。
點擊某次構(gòu)建的"控制臺輸出"可以看到shell的輸出老厌。調(diào)試成功后拜隧,登錄iTunesConnect后臺垦页,如果發(fā)版文案被成功修改即說明此次自動化集成完美成功!
FAQ
1、拉取代碼失敗,提示:ERROR: Error fetching remote repo 'origin'
一般是填寫的帳號訪問Git倉庫的權(quán)限問題铣口。如果你的遠程CI機器上集成過別的項目,那么你需要查看CI機器的keychain,其中存放的gitlab帳號密碼是否有訪問你目前配置的這個項目的權(quán)限掏熬。因為在jenkins上配置Credentials時捆蜀,如果keychain中沒有帳號會添加你新配置的帳號誊薄,如果已經(jīng)有了不會配置新的。即jenkins會使用keychain中現(xiàn)有的帳號來拉取代碼。
寫在最后
下一篇文章會介紹如何優(yōu)化打包項目俏脊,包括自動獲取AppVersion认然,自動升build號,自動觸發(fā)構(gòu)建,配置自動發(fā)送郵件,定制郵件內(nèi)容等功能。
下一篇:iOS打包自動化實踐(三)