原文地址發(fā)布在我自己的獨(dú)立博客上:http://www.jvaeyhcd.cc/2016/05/21/%E4%BD%BF%E7%94%A8Jenkins%E6%9E%84%E5%BB%BAiOS%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E8%87%AA%E5%8A%A8%E6%89%93%E5%8C%85/,順便說一下寞焙,簡書居然不支持markdown储狭,真的應(yīng)該給個(gè)差評互婿。
持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成它們的工作辽狈,通過每個(gè)成員每天至少集成一次慈参,也就意味著每天可能會(huì)發(fā)生多次集成。每次集成都通過自動(dòng)化的構(gòu)建(包括編譯刮萌,發(fā)布懂牧,自動(dòng)化測試)來驗(yàn)證,從而盡早地發(fā)現(xiàn)集成錯(cuò)誤尊勿。
為什么使用持續(xù)集成
1僧凤、減少重復(fù)繁瑣的打包過程
2、任何時(shí)間元扔、任何地點(diǎn)測試都可以獲取到新包
3躯保、增強(qiáng)項(xiàng)目的可見性
做持續(xù)集成對我們開發(fā)者來說是一件一勞永益的事情,對于發(fā)包這個(gè)問題澎语,相信是每個(gè)程序員GG心中揮之不去的痛途事,而測試MM們也在每次馬上就發(fā)出來的承諾中得出一個(gè)結(jié)論就是“你是個(gè)大騙子”。
所以每次被測試MM追著要包擅羞,產(chǎn)品經(jīng)理說給我裝一個(gè)新包瞧瞧唄尸变,后臺(tái)GG說給我裝一個(gè)老版本調(diào)試一下啊。减俏。召烂。這個(gè)時(shí)候我們的內(nèi)心是奔潰的,然后我們不得不暫停手下的工作娃承,切換到某個(gè)版本奏夫,Archive。历筝。酗昼。其實(shí)對于打包發(fā)包這種事情根本就不是開發(fā)需要做的,因?yàn)檫@是一個(gè)簡單沒有技術(shù)含量且浪費(fèi)時(shí)間的工作梳猪。時(shí)間就是金錢麻削,所以為了不再浪費(fèi)我們開發(fā)寶貴的時(shí)間,自動(dòng)化構(gòu)建這件事情必須得提上日程了春弥。
常見的持續(xù)集成工具
持續(xù)集成的工具有很多呛哟,不過最好用的還是Jenkins,Travis能夠?qū)ithub上的開源項(xiàng)目做很好的集成惕稻,考慮到Jenkins的穩(wěn)定性竖共,我們還是選擇Jenkins來開始我的iOS持續(xù)集成。
工程結(jié)構(gòu)
本事例項(xiàng)目工程代碼存放在coding俺祠,使用Cocoapods管理第三方庫公给,存在在coding上的項(xiàng)目目錄結(jié)構(gòu)如下:?
由于cocoapods文件過多借帘,所以沒有必要上傳到git倉庫中,只用將Podfile文件傳上去即可淌铐。
Jenkins的安裝
由于Jenkins是Java開發(fā)的肺然,所以首先我們需要先安裝好Java環(huán)境,然后去Jenkins的[官網(wǎng)](http://jenkins-ci.org/)下載最新的war包腿准。下載完成后际起,打開終端,進(jìn)入到war包所在目錄吐葱,執(zhí)行以下命令:
java -jar jenkins.war --httpPort=8888
httpPort指的就是Jenkins所使用的http端口街望,這里指定8888,可根據(jù)具體情況來修改弟跑。待Jenkins啟動(dòng)后灾前,在瀏覽器頁面輸入以下地址:
http://localhost:8888
這樣就可以打開Jenkins頁面了。
`--httpPort=8888`可以不輸入孟辑,不輸入默認(rèn)端口號為8080
打開鏈接后哎甲,先要設(shè)置一些安裝信息,這里就不再啰嗦饲嗽,因?yàn)槭趾唵翁棵担酉聛砦覀儊砜窗惭b成功后的相關(guān)配置。
Jenkins的配置
到Jenkins頁面貌虾,Jenkins-系統(tǒng)管理-插件管理-可選插件中吞加,安裝一下插件:
* GIT plugin
* Git client plugin
* Xcode integration
* CocoaPods Jenkins Integration
Git私有倉庫配置
按照如下方式添加SSH,因?yàn)轫?xiàng)目代碼是存放在coding上的所以酝惧,這個(gè)關(guān)于生成SSH可以以Coding為例:https://coding.net/help/doc/git/ssh-key.html
創(chuàng)建Job
這里的步驟我準(zhǔn)備全部一圖片的形式展示出來榴鼎。
點(diǎn)擊“Jenkins”-“新建”:
源碼管理
選擇剛剛創(chuàng)建的項(xiàng)目,點(diǎn)擊“配置”:
這里最好使用SSH晚唇,這個(gè)工程是私有項(xiàng)目,如果出現(xiàn)錯(cuò)誤肯定是由你自己配置錯(cuò)誤造成的盗似。
構(gòu)建步驟設(shè)置
選擇構(gòu)建步驟哩陕,記得添加Xcode插件,選擇添加Execute Shell和Xcode赫舒,有先后順序悍及。
設(shè)置Execute Shell
Xcode General build settings
Keychain path填寫`${HOME}/Library/Keychains/login.keychain`
Keychain password對應(yīng)的密碼可以在鑰匙串中查看:
Advanced Xcode build options
fir.im Jenkins 插件安裝
上面的構(gòu)建配置好了后,如果順利的話就已經(jīng)能夠編譯出ipa文件了接癌,但是編譯出來的ipa只能放在本地心赶,不能給大家安裝,所以編譯完成后我們還需要將ipa文件上傳到fir.im缺猛。
fir插件的安裝方法詳情請移步:《fir.im Jenkins 插件使用方法》
構(gòu)建后上傳到fir.im
安裝好fir插件后在“構(gòu)建后操作”中點(diǎn)擊“添加構(gòu)建后操作步驟”缨叫,可以看到:
點(diǎn)擊“upload to fir.im”椭符,然后會(huì)出現(xiàn)如下界面:
Fir.im的Token獲取地址:http://fir.im/apps/apitoken
手動(dòng)構(gòu)建
選中你要構(gòu)建的項(xiàng)目,然后點(diǎn)擊“立即構(gòu)建”
選擇正在構(gòu)建的Build耻姥,然后點(diǎn)擊“Console Output”可以查看build過程中打印的一些信息销钝,如果遇到什么報(bào)錯(cuò)信息都可以在這里面查看。
自動(dòng)構(gòu)建設(shè)置
構(gòu)建觸發(fā)器有一下幾種觸發(fā)方式:
* 觸發(fā)遠(yuǎn)程構(gòu)建 (例如,使用腳本)
* Build after other projects are built
* Build periodically
* Poll SCM
這里我只用到了Build periodically
總結(jié)
為了搭建這個(gè)Jenkins我看了很多博客琐簇,不過大多比較難懂蒸健,一直都沒有成功,經(jīng)過各種嘗試后最終搭建成功婉商,我在此將整個(gè)過程記錄下來似忧,以來是對自己知識的一個(gè)積累,二來如果能夠給將要搭建Jenkins的iOS持續(xù)集成的朋友們一點(diǎn)幫助也是極好的丈秩。
參考文檔: