Jenkins+Cocoapods+Coding+Git+Fir iOS項(xiàng)目持續(xù)集成

原文地址發(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ù)集成工具

* Jenkins CI

* Travis CI

* Hudson CI

* Circle CI

持續(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)如下:?

目錄結(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)建Job

源碼管理

選擇剛剛創(chuàng)建的項(xiàng)目,點(diǎn)擊“配置”:

設(shè)置源碼地址

這里最好使用SSH晚唇,這個(gè)工程是私有項(xiàng)目,如果出現(xiàn)錯(cuò)誤肯定是由你自己配置錯(cuò)誤造成的盗似。

構(gòu)建步驟設(shè)置

選擇構(gòu)建步驟哩陕,記得添加Xcode插件,選擇添加Execute Shell和Xcode赫舒,有先后順序悍及。

添加構(gòu)建步驟

設(shè)置Execute Shell

Execute Shell

Xcode General build settings

Xcode General build settings
Code signing & OS X keychain options

Keychain path填寫`${HOME}/Library/Keychains/login.keychain`

Keychain password對應(yīng)的密碼可以在鑰匙串中查看:

OS X keychain password

Advanced Xcode build options

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)建后操作步驟”缨叫,可以看到:

添加構(gòu)建后上傳fir步驟

點(diǎn)擊“upload to fir.im”椭符,然后會(huì)出現(xiàn)如下界面:

設(shè)置fir.im的Token

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ò)信息都可以在這里面查看。

控制臺(tái)輸出

自動(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

Build periodically觸發(fā)自動(dòng)構(gòu)建

總結(jié)

為了搭建這個(gè)Jenkins我看了很多博客琐簇,不過大多比較難懂蒸健,一直都沒有成功,經(jīng)過各種嘗試后最終搭建成功婉商,我在此將整個(gè)過程記錄下來似忧,以來是對自己知識的一個(gè)積累,二來如果能夠給將要搭建Jenkins的iOS持續(xù)集成的朋友們一點(diǎn)幫助也是極好的丈秩。

參考文檔:

[一步一步構(gòu)建iOS持續(xù)集成:Jenkins+GitLab+蒲公英+FTP]

[使用 Xcodebuild + Jenkins + Apache 做 iOS 持續(xù)集成]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盯捌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子癣籽,更是在濱河造成了極大的恐慌挽唉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,423評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筷狼,死亡現(xiàn)場離奇詭異瓶籽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)埂材,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評論 2 385
  • 文/潘曉璐 我一進(jìn)店門塑顺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俏险,你說我怎么就攤上這事严拒。” “怎么了竖独?”我有些...
    開封第一講書人閱讀 157,019評論 0 348
  • 文/不壞的土叔 我叫張陵裤唠,是天一觀的道長。 經(jīng)常有香客問我莹痢,道長种蘸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,443評論 1 283
  • 正文 為了忘掉前任竞膳,我火速辦了婚禮航瞭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坦辟。我一直安慰自己刊侯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評論 6 385
  • 文/花漫 我一把揭開白布锉走。 她就那樣靜靜地躺著滨彻,像睡著了一般藕届。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疮绷,一...
    開封第一講書人閱讀 49,798評論 1 290
  • 那天翰舌,我揣著相機(jī)與錄音,去河邊找鬼冬骚。 笑死椅贱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的只冻。 我是一名探鬼主播庇麦,決...
    沈念sama閱讀 38,941評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喜德!你這毒婦竟也來了山橄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,704評論 0 266
  • 序言:老撾萬榮一對情侶失蹤舍悯,失蹤者是張志新(化名)和其女友劉穎航棱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萌衬,經(jīng)...
    沈念sama閱讀 44,152評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饮醇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秕豫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朴艰。...
    茶點(diǎn)故事閱讀 38,629評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖混移,靈堂內(nèi)的尸體忽然破棺而出祠墅,到底是詐尸還是另有隱情,我是刑警寧澤歌径,帶...
    沈念sama閱讀 34,295評論 4 329
  • 正文 年R本政府宣布毁嗦,位于F島的核電站,受9級特大地震影響回铛,放射性物質(zhì)發(fā)生泄漏金矛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評論 3 313
  • 文/蒙蒙 一勺届、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娶耍,春花似錦免姿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽故俐。三九已至,卻和暖如春紊婉,著一層夾襖步出監(jiān)牢的瞬間药版,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評論 1 266
  • 我被黑心中介騙來泰國打工喻犁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留槽片,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,333評論 2 360
  • 正文 我出身青樓肢础,卻偏偏與公主長得像还栓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子传轰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評論 2 348

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