Jenkins+iOS持續整合細節記錄

Yarn_逸發表於2019-04-24

原文連結

前言

iOS持續整合採用Jenkins已經是一個非常成熟的方案了,以前公司用過,自己還沒嘗試搭建過,這次嘗試了一下,踩了很多坑,網上的很多文章都是早些年的,都9102年了,Jenkins也有了很多變化,Xcode也是10.x版本了。我分享一下我個人覺得要注意的細節。

環境介紹

  • 系統版本:macOS Mojave 10.14.4 (18E226)
  • Xcode版本:Version 10.1 (10B61)
  • Jenkins版本:Jenkins ver. 2.164.2

我的專案整合了cocoapods和2個Project,其中一個Project用了Git的submodule。

開始搭建

Jenkins下載安裝,完成後開啟Jenkins的介面,下載一些外掛,新建一個空的任務。接下來開始配置,配置我是分三步:1、下載原始碼 2、配置證書和打包選項 3、上傳ipa。

下載原始碼

原始碼我使用的是Git,程式碼放在gitee,其實放哪都是類似的。設定Repository URL和SSH,如果配置錯誤的話,介面會一直報錯。Submodule的配置,需要勾選上 Additional Behaviours 勾上Recursively update submodulesUse credentials from default remote of parent repository 其中第二項的意思是submodule的驗證跟主專案一致,我的專案是一致的,可以勾上,若不是的話,需要在想辦法,這裡沒有在深入研究。 cocoapods的話需要在構建中加入shell

 export LC_ALL=en_US.UTF-8
/usr/local/bin/pod install --verbose --no-repo-update 

複製程式碼

可以先嚐試一下構建,如果成功。建議去工作空間,找到專案所在的目錄,把整個專案複製出來,自己先編譯一下,是否能編譯過。

注意:

  • 原始碼SSH一定要切換到jenkens賬戶,否則一直報錯,參考指定Git原始碼時提示無許可權
  • 當時我配置URL clone的方式,怎麼都會報錯,後來換成SSH就OK了。
  • export LC_ALL=en_US.UTF-8這句話得加,否則會報錯

配置證書和打包選項

配置證書比較繁瑣,首先去Jenkins Keychains and Provisioning Profiles Management上傳本機的keychain和Provisioning Profiles,這個網上有教程,可以參考一下,這裡介紹的比較詳細。Provisioning Profiles拿到的都是UUID的檔名,可以去用xcode開啟專案,build settings,搜尋profiles,就能找到對應的UUID,上傳即可。 新增完後,再到回到剛建的任務-設定-構建-增加構建步驟,新增一個xcode,開始配置xcode。

第一項General build settingsDevelopment Team ID這一項,如果不知道從哪裡查的話,先用自己的xcode打個包,匯出ipa的檔案目錄中有ExportOptions.plist中的team id。 把Generate Archive?設定為YES,又會多出很多選項,Output directory建議是${WORKSPACE}/Build,如果不在workspace的話,會報錯。

第二項Code signing & OS X keychain options:我一開配置好的,然後選Read from Xcode Project,一直都是失敗,建議不要勾選這個選項。勾選Manual signingUnlock Keychain?把該選的選上,Keychain password就是本機的登入密碼。

第三項Advanced Xcode build options:這個也比較簡單,如果專案是workspace,直接在Xcode Workspace File填上workspace的路徑就行了,注意不需要填字尾。但是建議還是把其他選項都填上,其中Xcode Project Directory會影響第四項的配置,不填的話,會找不到info.plist,導致無法更改CFBundleVersion

第四項Versioning:這一項是用於每次構建,動態變更build number的,一般在Technical version填上${BUILD_ID}

配置完成後,可以構建一下,看看能不能成功。如果失敗的話,可以檢視一下原因,或者仿照第一步拉原始碼,把專案拷出來,用xcodebuild嘗試打包,確保自己的專案是可以打包的,再查詢Jenkins配置的問題。

上傳ipa

這一部非常簡單,我使用的是蒲公英,使用 Jenkins 實現持續整合 (iOS),先去Jenkins外掛下一個Upload to pgyer,再到剛建的任務-設定-構建-增加構建步驟,增加一個Upload to pgyer with api v2pgyer api_key可以在蒲公英官網找到,scandir就是ipa所在的目錄,file wildcard是指ipa的檔案萬用字元,注意不是檔案的全程,如果目錄下只有一個ipa,使用*.ipa即可。

結語

每個人的環境和需求都不一樣,如果配置過程中出了問題,一定要多看控制檯輸出,看看哪裡報錯,報錯的原因是什麼,錯誤資訊還是比較詳細的,一步一步解決。

相關文章