隨著項目的不斷推進,參與的人員越來越多蝙砌,內(nèi)容越來越復(fù)雜阳堕,構(gòu)建項目本身可能就變成了復(fù)雜又耗時的工作。持續(xù)集成(Continuous Integration,簡稱CI)择克,作為一種團隊開發(fā)實踐方法恬总,很好的解決這些問題。它可以讓開發(fā)團隊專注于業(yè)務(wù)需求肚邢,讓測試團隊更快的構(gòu)建項目檢測問題壹堰,加快項目進度。
Jenkins作為一種持續(xù)集成的方案骡湖,由于其豐富的插件和較高的可控性贱纠,備受大家喜愛。
安裝Jenkins
- 首先到官方網(wǎng)站下載Jenkins安裝包响蕴,由于它是Java項目所以依賴JDK
-
找到下載的jenkins.pkg安裝包谆焊,安裝時注意在選擇 安裝類型 階段選擇自定義安裝。
Jenkins自定義安裝 -
取消 Start at boot as "jenkins"
取消勾選 安裝完成后在Terminal中輸入
$ open /Applications/Jenkins/jenkins.war
或
$ java -jar /Applications/Jenkins/jenkins.war
啟動Jenkins
配置Jenkins
- 打開http://localhost:8080會出現(xiàn)重設(shè)初始密碼的界面浦夷。根據(jù)界面中的路徑提示去相應(yīng)文件中取出密碼辖试。
- 創(chuàng)建一個用戶
- 安裝插件Xcode integration和Keychains and Provisioning Profiles Management
打開Jenkins->系統(tǒng)管理->插件管理->可選插件,安裝這兩個插件劈狐。
安裝插件
4.配置Keychains and Provisioning Profiles Management
Jenkins->系統(tǒng)管理->Keychains and Provisioning Profiles Management罐孝。
Upload Keychain or Provisioning Profile File這里上傳的是 /Users/你的用戶/Library/Keychains/login.keychain 這個文件,如果你的系統(tǒng)中有l(wèi)ogin.keychain-db這個文件懈息,請把它拷貝出來肾档,重命名成login.keychain再上傳摹恰。
Code Signing Identity這里填寫 證書名稱
Provision Profiles Directory Path這里填寫與證書相對應(yīng)的描述文件的路徑辫继,這個路徑可以是自定義路徑。
- 配置Xcode integration
Jenkins->系統(tǒng)管理->系統(tǒng)設(shè)置->Xcode Builder
- 新建項目
- Jenkins->新建
-
選擇->構(gòu)建一個自由風格的軟件項目
創(chuàng)建自由風格項目 -
填寫項目信息
填寫項目信息 填寫SVN配置
Repository URL 填寫SVN項目路徑俗慈。
Credentials填寫SVN用戶姑宽。
-
增加SVN用戶信息
增加SVN用戶信息 -
填寫構(gòu)建信息
這里需要注意一點,如果第一次點開Keychain and Code Signing Identites后發(fā)現(xiàn)闺阱,Code Sign Identity 如果不能選擇炮车,那先點擊保存,再打開項目來繼續(xù)設(shè)置。
填寫構(gòu)建信息 -
填寫Mobile Provisioning Profiles
填寫Mobile Provisioning Profiles 增加 構(gòu)建
注意:這里如果Xcode的版本低于9.0瘦穆,就可以正常輸出ipa包纪隙。如果Xcode版本不低于9.0,就會由于Xcode 9.0不在允許你訪問鑰匙串里的內(nèi)容(具體原因看這里)扛或,而輸出ipa失敗绵咱。具體的解決方法請參照后面"遇到的問題"中具體的解決方法。
如果你的Xcode版本低于9.0那么請繼續(xù)向下看??
增加構(gòu)建步驟->Xcode
-
填寫iOS項目Target名稱
填寫后點擊 Setting 設(shè)置其他參數(shù)
填寫iOS項目Target名稱 -
填寫Setting信息
其中注意 Output Directory 是生成iPA包的路徑 ${WORKSPACE}是項目在Jenkins中的工作目錄熙兔。
填寫Setting信息 -
設(shè)置Code signing & OS X keychain options
設(shè)置 Code Signing & OS X keychain options
Development Team ID填寫開發(fā)團隊的ID,它可以在鑰匙串中的證書詳情里查看(右鍵證書->查看詳情)悲伶。
勾選Unlock Keychain,選擇上傳的login.keychain文件住涉。 如果項目里使用了workspace 麸锉,那還需要配置Advanced Xcode build options
Xcode Schema File填寫iOS項目中工程名
Xcode Workspace File填寫iOS workspace文件的絕對路徑
-
開始構(gòu)建項目
點擊保存,返回到Test_Project_1構(gòu)建下舆声,選擇立即構(gòu)建
立即構(gòu)建
這時會有進度條顯示花沉,構(gòu)建進度,點擊進入之后可以查看Log
構(gòu)建后的操作
構(gòu)建完成后纳寂,可以選擇將ipa包上傳到自己的服務(wù)器主穗,也可以用fir或者蒲公英等第三方服務(wù)。
- 參考http://blog.fir.im/jenkins/使用官方工具fir-plugin-1.9.5.hpi插件上傳ipa包到fir毙芜。
遇到的問題
- Xcode版本高于9.0 忽媒,使用Xcode Builder構(gòu)想項目的時候會出現(xiàn)導(dǎo)出ipa失敗。
error: exportArchive: "Your.app" requires a provisioning profile with the Push Notifications feature.
Error Domain=IDEProvisioningErrorDomain Code=9 ""Your.app" requires a provisioning profile with the Push Notifications feature." UserInfo={NSLocalizedDescription="Your.app" requires a provisioning profile with the Push Notifications feature., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
** EXPORT FAILED **
最后錯誤提示腋粥,EXPORT FAILED晦雨,推斷導(dǎo)出ipa包時出的錯。根據(jù)最后提示
Add a profile to the "provisioningProfiles" dictionary in your Export Options property list
google一下隘冲,發(fā)現(xiàn)Xcode 9.0不允許訪問鑰匙串里的內(nèi)容闹瞧。
解決方案: 在構(gòu)建中添加Execute Shell替代Xcode Builder。
使用腳本替代插件(插件本質(zhì)是通過我們的配置生成打包腳本并執(zhí)行)展辞。
- 腳本內(nèi)容
xcodebuild -archivePath "/Users/你的用戶/.jenkins/workspace/你的Jenkin構(gòu)建項目名/output/debug/name.xcarchive" -workspace name.xcworkspace -sdk iphoneos -scheme "schemename" -configuration "Release" archive
xcodebuild -exportArchive -archivePath "/Users/你的用戶/.jenkins/workspace/你的Jenkin構(gòu)建項目名/output/debug/name.xcarchive" -exportPath "/Users/你的用戶/.jenkins/workspace/你的Jenkin構(gòu)建項目名/ipa/" -exportOptionsPlist '/Users/chaos/.jenkins/workspace/你的Jenkin構(gòu)建項目名/ipa/ExportOptions.plist' -allowProvisioningUpdates
按照你的實際項目情況替換腳本中的內(nèi)容
name.xcarchive =>TargetName.xcarchive
name.xcworkspace => iOS 項目 workspace 名字
schemename => scheme manage中的名字
其中ExportOptions.plist 奥邮,直接使用Xcode導(dǎo)出iPA同文件夾中的同名文件就行。
ExportOptions.plist文件請放在Jinkens的workspace罗珍,構(gòu)建項目文件夾下洽腺。
腳本中ExportOptions.plist路徑可以自定義。
擴展
其他問題可以參考Jenkins自動打包遇到的問題
Jenkins配置Android構(gòu)建覆旱,請點擊這里
最后
感謝閱讀蘸朋,如果對大家有幫助,請在github上follow和star扣唱,本文發(fā)布在逆流的簡書博客藕坯,轉(zhuǎn)載請注明出處