Jenkins+iOS持續集成細節記錄

原文連接ios

前言

iOS持續集成採用Jenkins已是一個很是成熟的方案了,之前公司用過,本身還沒嘗試搭建過,此次嘗試了一下,踩了不少坑,網上的不少文章都是早些年的,都9102年了,Jenkins也有了不少變化,Xcode也是10.x版本了。我分享一下我我的以爲要注意的細節。git

環境介紹

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

個人項目集成了cocoapods和2個Project,其中一個Project用了Git的submodule。github

開始搭建

Jenkins下載安裝,完成後打開Jenkins的界面,下載一些插件,新建一個空的任務。接下來開始配置,配置我是分三步:一、下載源碼 二、配置證書和打包選項 三、上傳ipa。shell

下載源碼

源碼我使用的是Git,代碼放在gitee,其實放哪都是相似的。設置Repository URL和SSH,若是配置錯誤的話,界面會一直報錯。Submodule的配置,須要勾選上 Additional Behaviours 勾上Recursively update submodulesUse credentials from default remote of parent repository 其中第二項的意思是submodule的驗證跟主項目一致,個人項目是一致的,能夠勾上,若不是的話,須要在想辦法,這裏沒有在深刻研究。 cocoapods的話須要在構建中加入shellapi

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

複製代碼

能夠先嚐試一下構建,若是成功。建議去工做空間,找到項目所在的目錄,把整個項目複製出來,本身先編譯一下,是否能編譯過。xcode

注意:ui

  • 源碼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。spa

第一項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就是本機的登陸密碼。code

第三項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便可。

結語

每一個人的環境和需求都不同,若是配置過程當中出了問題,必定要多看控制檯輸出,看看哪裏報錯,報錯的緣由是什麼,錯誤信息仍是比較詳細的,一步一步解決。

相關文章
相關標籤/搜索