jenkins+xcode+蒲公英實(shí)現(xiàn)ipa自動(dòng)化打包

一、簡(jiǎn)述

公司特意配了一臺(tái)mac機(jī)給測(cè)試用,并且打包發(fā)布這些功能都要在這臺(tái)測(cè)試機(jī)上完成,老大特意讓我去研究一下jenkins實(shí)現(xiàn)自動(dòng)化打包,好吧,那就去看吧。
百度搜一下,Mark一下簡(jiǎn)介:jenkins是一個(gè)廣泛用于持續(xù)構(gòu)建的可視化web工具,持續(xù)構(gòu)建即各種項(xiàng)目的”自動(dòng)化”編譯、打包、分發(fā)部署。jenkins可以很好的支持各種語(yǔ)言(比如:Java, c#, PHP等)的項(xiàng)目構(gòu)建,也完全兼容ant、maven、gradle等多種第三方構(gòu)建工具,同時(shí)跟svn、Git能無(wú)縫集成,也支持直接與知名源代碼托管網(wǎng)站,比如github、bitbucket直接集成。

二、Jenkins的安裝

1、Jenkins本身是用java語(yǔ)言開(kāi)發(fā)的,所以安裝Jenkins之前,要保證你的電腦有jdk,如果沒(méi)有,請(qǐng)到如下鏈接下載:http://rj.baidu.com/soft/detail/25851.html?ald ,另外建議git、ant、maven、gradle、groovy等工具也一并安裝好,方便與這些構(gòu)建工具集成。
2、進(jìn)入Jenkins的官網(wǎng) https://jenkins.io/index.html ,然后下載并安裝Jenkins。此處有兩種安裝方法,使用命令行安裝和使用jenkins.pkg安裝,建議使用后一種
3、下載
1)點(diǎn)擊鏈接進(jìn)入官網(wǎng)

84E967A9-7F8D-4C9E-90F7-901950D46D55.jpg

2)點(diǎn)擊download

D76CB828-8659-4BE5-BA95-3E45C5AC46FB.jpg

3)我選擇的是Mac OS X

B89463C6-D93E-4302-9995-C6E7AF8C4209.jpg

4)下載完成后,得到 jenkins-2.19.4.pkg 文件,點(diǎn)擊直接安裝即可,在下圖中,選擇自定,取消 start at boot as“jenkins”,一般不需要自啟動(dòng)

{FE3B7757-441D-A430-8F85-172F0657495E}.png

5)安裝完成后,會(huì)直接跳轉(zhuǎn)到如下界面,如果沒(méi)有跳轉(zhuǎn)或者跳轉(zhuǎn)失敗,可通過(guò)執(zhí)行如下命令 ” open /Applications/Jenkins/jenkins.war ” 進(jìn)入到該界面

{B8FC56C6-117D-CE4B-0B0A-DBB9D650F905}.png

如果打開(kāi)沒(méi)有反應(yīng),啟動(dòng)不了,就在瀏覽器直接打開(kāi):http://localhost:8080/ ,就可以進(jìn)入到上面界面了。
6)觀察圖中的路徑,然后打開(kāi)你的終端,執(zhí)行如下命令(注意:該命令僅在安裝Jenkins的過(guò)程中執(zhí)行才有效;安裝成功后,再在終端中執(zhí)行是無(wú)效的):

7)然后將我們得到的password輸入到“Administrator password“中,即可進(jìn)入如下界面,接著安裝一些建議的插件,安裝過(guò)程中,有的插件可能會(huì)安裝失敗,可以跳過(guò),之后需要對(duì)應(yīng)的插件時(shí),再重新安裝即可,具體后面會(huì)講到:

8)插件安裝完成后,可能會(huì)卡在如下界面,不會(huì)自動(dòng)跳轉(zhuǎn),刷新下界面即可:
插件

9)在刷新后的界面中注冊(cè),輸入用戶名和密碼,如下:

10)注冊(cè)成功后,點(diǎn)擊”Start using Jenkins”

三、Jenkins的使用

1、安裝成功后,會(huì)進(jìn)入到如下界面:
jenkins首頁(yè)

2、新建項(xiàng)目

1)點(diǎn)擊新建,創(chuàng)建一個(gè)項(xiàng)目

2)輸入項(xiàng)目名稱,并選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目,點(diǎn)擊下方的OK。

3)General 中建議寫上一些項(xiàng)目描述,這里啟用項(xiàng)目安全是指管理員對(duì)對(duì)應(yīng)登錄用戶設(shè)置的一些權(quán)限。


圖片.png

4)這里設(shè)置的是構(gòu)建項(xiàng)目(即用jenkins打包ipa時(shí))的參數(shù)設(shè)置。

圖片.png

具體的使用是在項(xiàng)目頁(yè)點(diǎn)擊

圖片.png

然后進(jìn)入頁(yè)面,BR就是剛剛設(shè)置的參數(shù)名稱,master就是你對(duì)應(yīng)項(xiàng)目的分支,在所有的設(shè)置都設(shè)置好了時(shí)就可以點(diǎn)擊開(kāi)始構(gòu)建。

圖片.png

5)由于我們?cè)谂渲胘enkins用到了JDK,這里對(duì)應(yīng)的是JDK的名稱,第二個(gè)勾選項(xiàng)是配置的打包的項(xiàng)目關(guān)聯(lián)的mac電腦名稱(自己設(shè)置)。


圖片.png

具體的在首頁(yè)中可看到

圖片.png

點(diǎn)擊進(jìn)去


圖片.png

6)源碼管理,公司的項(xiàng)目是放在gitlab上的,這里Repository URL填的是項(xiàng)目的路徑,Credentials添加的是gitlab上登錄的用戶名和密碼, Branch Specifier (blank for 'any')這里就是上面提到的構(gòu)建時(shí)的分支設(shè)置參數(shù)。

圖片.png

輸入對(duì)應(yīng)的用戶名和密碼后,并在Credentials中選擇該帳號(hào)。

7)由于項(xiàng)目是在另一臺(tái)mac機(jī)上構(gòu)建的,則這里配置身份驗(yàn)證令牌。

圖片.png

8)構(gòu)建設(shè)置
在下圖的Target中,保證該Target和Xcode項(xiàng)目工程中的Target同名。建議勾選Clean before build?,并將Configuration設(shè)為Release。勾選Pack application and build .ipa?,同時(shí)為即將輸出的ipa文件命名并指定輸出路徑。
? Target:就是我們?cè)陧?xiàng)目中建立的Target
如果不清楚有哪些Target的情況下可以到xcodeproj或xcworkspace的目錄下運(yùn)行如下命令 xcodebuild -list 即可看到Targets,其中是所有可以用的target。
? Clean before build?:這個(gè)是在編譯前是否clean一次,一般是選擇YES。
? Configuration: 對(duì)應(yīng)的是xcodebuild命令里的-configuration的參數(shù),可選項(xiàng)為[Debug、Release],一般都填Debug,這樣就可以將打包后的ipa交付給測(cè)試人員測(cè)試
? Pack application and build .ipa?:這個(gè)是在結(jié)束是是否要產(chǎn)生對(duì)應(yīng)的ipa文件,一般都是打上勾的
? .ipa filename pattern:這個(gè)配置項(xiàng)是配置所產(chǎn)生ipa的文件名,其中有一些可用的全局變量
其中${VERSION}和${SVN_REVISION}都是可以直接用的環(huán)境變量,如果想看還有哪些環(huán)境變量而已用可以點(diǎn)擊在Execute shell下方有個(gè) "See the list of available environment variables"進(jìn)行查看,這里就不進(jìn)行列出來(lái)了。
? Output directory:這個(gè)配置了ipa的輸出目錄(默認(rèn)Build output directory所在路徑,見(jiàn)下圖)

圖片.png

Code signing & OS X keychain options (簽名的設(shè)置)
Codee Signing Identity:所使用的簽名
如果不知道具體填什么可以到鑰匙串訪問(wèn)中尋找 iPhone Distribution:開(kāi)頭的所使用的證書,然后選中后點(diǎn)擊右鍵選擇顯示簡(jiǎn)介,在彈出的窗口中找到常用名稱,將其復(fù)制填入即可。 或者可以在命令行中輸入security find-identity -p codesigning -v來(lái)查找iPhone Distribution:開(kāi)頭的簽名即可,找到后將雙引號(hào)中的內(nèi)容復(fù)制。
? Unlock Keychain?: Jenkins需要訪問(wèn)Keychain,獲取響應(yīng)的key,所以需要授權(quán)。選上就自動(dòng)解鎖。需要提供密碼。
? Keychain path: 默認(rèn)都是${HOME}/Library/Keychains/login.keychain
? Keychain password: 鑰匙串的密碼
注意:這個(gè)可以在 系統(tǒng)管理-》系統(tǒng)設(shè)置-》Xcode-》BuilderKeychains-》添加,在配置中可以選取

圖片.png

Advanced Xcode build options(xcodebuild命令的配置)
? Clean test report?:這個(gè)是如果要用到xcode測(cè)試的時(shí)候才用到,意思就跟英語(yǔ)一樣
? Xcode Scheme File: 關(guān)于這個(gè)其實(shí)對(duì)應(yīng)的就是xcodebuild命令中的-scheme的參數(shù)
如果您不知道要填寫什么的話, 可以通過(guò)xcodebuild -list來(lái)查詢。是不是覺(jué)得這條命令很熟悉,沒(méi)錯(cuò)前面查找target的時(shí)候也是用這個(gè)命令!
? SDK:這里是xcodebuild命令中的-sdk的參數(shù),指定編譯和打包的sdk號(hào)。如果不懂可以填寫哪些可以通過(guò)xcodebuild -showsdks來(lái)查看。
? SYMROOT:該變量是編譯和打包產(chǎn)生結(jié)果的輸出目錄( .a, .zip, .ipa, .hmap等產(chǎn)生文件的位置),其中該目錄其實(shí)是包括了CONFIGURATION BUILD DIR和OBJROOT這兩個(gè)目錄,默認(rèn)的路徑是所編譯的xcodeproj所在目錄,如主項(xiàng)目和POD項(xiàng)目整合后,則會(huì)在主項(xiàng)目的和POD項(xiàng)目的XCODEPROJ所在目錄
如果在指定了OBJROOT的位置后,編譯過(guò)程中產(chǎn)生的文件不會(huì)在該目錄體現(xiàn) 如果在指定CONFIGURATION_BUILD_DIR的位置后,該變量則變成無(wú)效化
? Custom xcodebuild arguments:這個(gè)就是xcodebuild命令中的指定buildsetting的命令的參數(shù),至于可以指定哪些參數(shù)請(qǐng)不要問(wèn)我,可以找度娘或者谷哥
? Xcode Workspace File:該配置是指明了xcodebuild中的-workspace的變量,其實(shí)就是如果您需要編譯打包一個(gè)workspace時(shí)候的時(shí)候指定那個(gè)后綴名為xcworkspace的文件, 如果指定了該配置,那么Xcode project file配置項(xiàng)將無(wú)效
? Xcode Project Directory:該目錄是指明了包含xcodeproj文件的目錄(這個(gè)我是沒(méi)用用到如果用了該參數(shù)可能最開(kāi)始第一步的構(gòu)建就沒(méi)用了------不過(guò)我還沒(méi)證實(shí),歡迎小伙伴證實(shí)后告訴我)
? Xcode Project File: 如果需要構(gòu)建一個(gè)project而不是一個(gè)workspace的話則指定文件的名稱(后綴名為xcodeproj的文件)
? Build output directory:該參數(shù)只是指明了最終需要產(chǎn)生的動(dòng)態(tài)包,ipa,app等文件默認(rèn)路徑為所編譯的xcodeproj所在目錄,如主項(xiàng)目和POD項(xiàng)目整合后,則會(huì)在主項(xiàng)目的和POD項(xiàng)目的XCODEPROJ所在目錄(編譯產(chǎn)生的相關(guān)文件所在目錄,默認(rèn)為$SYMROOT/$CONFIGURATION)
? 值得說(shuō)的是有一個(gè)參數(shù)也是挺常用的就是OBJROOT,該參數(shù)是產(chǎn)生 .a和 .hmap文件的目錄,默認(rèn)路徑為所編譯的xcodeproj所在目錄,如主項(xiàng)目和POD項(xiàng)目整合后,則會(huì)在主項(xiàng)目的和POD項(xiàng)目的XCODEPROJ所在目錄,關(guān)于OBJROOT、CONFIGURATION BUILD DIR以及SYMROOT三個(gè)路徑之間的關(guān)系大家可以去查看官方的文檔。

圖片.png

3、添加上傳到第三方分發(fā)平臺(tái)(這里選擇蒲公英平臺(tái)作為例子)
蒲公英上的User Key
uKey="41ed0a30a0cdf9296501232e69b5a66b"
蒲公英上的API Key
apiKey="ece94057dd3d5bd3d570ae509a0c3e3d"
要上傳的ipa文件路徑
IPA_PATH="${WORKSPACE}/build/PPCSDKTest.ipa"
密碼
PASSWORD="123456"
MSG=git log -1 --pretty=%B
執(zhí)行上傳至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" http://www.pgyer.com/apiv1/app/upload

圖片.png

到此為止關(guān)于Jenkins整合Xcode的配置項(xiàng)并自動(dòng)上傳到蒲公英差不多就說(shuō)好了。那么可以稍微構(gòu)建一下項(xiàng)目試試了,構(gòu)建完項(xiàng)目后,你就會(huì)發(fā)現(xiàn)測(cè)試人員不需要天天來(lái)煩你,再也不需要聽(tīng)到“開(kāi)發(fā)狗,趕緊給我安裝一個(gè)最新的版本”了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容