Jenkins + SVN實現(xiàn)iOS項目持續(xù)集成(Continuous Integration)

隨著項目的不斷推進,參與的人員越來越多蝙砌,內(nèi)容越來越復(fù)雜阳堕,構(gòu)建項目本身可能就變成了復(fù)雜又耗時的工作。持續(xù)集成(Continuous Integration,簡稱CI)择克,作為一種團隊開發(fā)實踐方法恬总,很好的解決這些問題。它可以讓開發(fā)團隊專注于業(yè)務(wù)需求肚邢,讓測試團隊更快的構(gòu)建項目檢測問題壹堰,加快項目進度。

Jenkins作為一種持續(xù)集成的方案骡湖,由于其豐富的插件和較高的可控性贱纠,備受大家喜愛。

安裝Jenkins

下載JDK

下載JDK

下載Jenkins

下載Jenkins

  • 找到下載的jenkins.pkg安裝包谆焊,安裝時注意在選擇 安裝類型 階段選擇自定義安裝。

    Jenkins自定義安裝

  • 取消 Start at boot as "jenkins"

    取消勾選

  • 安裝完成后在Terminal中輸入
    $ open /Applications/Jenkins/jenkins.war

    $ java -jar /Applications/Jenkins/jenkins.war
    啟動Jenkins

配置Jenkins

  1. 打開http://localhost:8080會出現(xiàn)重設(shè)初始密碼的界面浦夷。根據(jù)界面中的路徑提示去相應(yīng)文件中取出密碼辖试。
  2. 創(chuàng)建一個用戶
  3. 安裝插件Xcode integrationKeychains and Provisioning Profiles Management
    打開Jenkins->系統(tǒng)管理->插件管理->可選插件,安裝這兩個插件劈狐。
    安裝插件

4.配置Keychains and Provisioning Profiles Management

Jenkins->系統(tǒng)管理->Keychains and Provisioning Profiles Management罐孝。

配置證書相關(guān)
  • 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)的描述文件的路徑辫继,這個路徑可以是自定義路徑。

  1. 配置Xcode integration

Jenkins->系統(tǒng)管理->系統(tǒng)設(shè)置->Xcode Builder

Xcode Builder設(shè)置
  1. 新建項目
  • Jenkins->新建
新建工程
  • 選擇->構(gòu)建一個自由風格的軟件項目


    創(chuàng)建自由風格項目
  • 填寫項目信息


    填寫項目信息
  • 填寫SVN配置
    Repository URL 填寫SVN項目路徑俗慈。
    Credentials填寫SVN用戶姑宽。

填寫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

增加構(gòu)建步驟
  • 填寫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

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)建后的操作

構(gòu)建完成后纳寂,可以選擇將ipa包上傳到自己的服務(wù)器主穗,也可以用fir或者蒲公英等第三方服務(wù)。

遇到的問題

  • Xcode版本高于9.0 忽媒,使用Xcode Builder構(gòu)想項目的時候會出現(xiàn)導(dǎo)出ipa失敗。
導(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

選擇Execute Shell

使用腳本替代插件(插件本質(zhì)是通過我們的配置生成打包腳本并執(zhí)行)展辞。

腳本內(nèi)容

  • 腳本內(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文件位置

ExportOptions.plist文件請放在Jinkens的workspace罗珍,構(gòu)建項目文件夾下洽腺。
腳本中ExportOptions.plist路徑可以自定義。


ExprotOptions.plist位置

擴展

最后

感謝閱讀蘸朋,如果對大家有幫助,請在github上follow和star扣唱,本文發(fā)布在逆流的簡書博客藕坯,轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末团南,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炼彪,更是在濱河造成了極大的恐慌吐根,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辐马,死亡現(xiàn)場離奇詭異佑惠,居然都是意外死亡,警方通過查閱死者的電腦和手機齐疙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門膜楷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贞奋,你說我怎么就攤上這事赌厅。” “怎么了轿塔?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵特愿,是天一觀的道長。 經(jīng)常有香客問我勾缭,道長揍障,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任俩由,我火速辦了婚禮毒嫡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幻梯。我一直安慰自己兜畸,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布碘梢。 她就那樣靜靜地躺著咬摇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪煞躬。 梳的紋絲不亂的頭發(fā)上肛鹏,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音恩沛,去河邊找鬼在扰。 笑死,一個胖子當著我的面吹牛复唤,可吹牛的內(nèi)容都是我干的健田。 我是一名探鬼主播烛卧,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼佛纫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呈宇?” 一聲冷哼從身側(cè)響起好爬,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎穆桂,沒想到半個月后享完,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡有额,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年般又,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巍佑。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茴迁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萤衰,到底是詐尸還是另有隱情堕义,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布脆栋,位于F島的核電站胳螟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏筹吐。R本人自食惡果不足惜糖耸,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丘薛。 院中可真熱鬧嘉竟,春花似錦、人聲如沸洋侨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽希坚。三九已至边苹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裁僧,已是汗流浹背个束。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工慕购, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茬底。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓沪悲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阱表。 傳聞我的和親對象是個殘疾皇子殿如,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容