Jenkins+xcode+SVN+fir自動打包

1.持續(xù)化集成的好處

1. 縮減開發(fā)周期,快速迭代版本

每個版本開始都會估算好開發(fā)周期,但是總會因為各種事情而延期。這其中包括了一些客觀因素。由于產(chǎn)品線增多,迭代速度越來越快,給測試帶來的壓力也越來越大。如果測試都在開發(fā)完全開發(fā)完成之后再來測試,那就會影響很長一段時間。這時候由于集成晚就會嚴(yán)重拖慢項目節(jié)奏。

2.自動化流水線操作帶來的高效

其實打包對于開發(fā)人員來說是一件很耗時,而且沒有很大技術(shù)含量的工作。如果開發(fā)人員一多,相互改的代碼沖突的幾率就越大,加上沒有產(chǎn)線管理機(jī)制,代碼倉庫的代碼質(zhì)量很難保證。團(tuán)隊里面會花一些時間來解決沖突,解決完了沖突還需要自己手動打包。這個時候如果證書又不對,又要耽誤好長時間。這些時間其實可以用持續(xù)集成來節(jié)約起來的。一天兩天看著不多,但是按照年的單位來計算,可以節(jié)約很多時間!

3.隨時可部署

有了持續(xù)集成以后,我們可以以天為單位來打包,這種高頻率的集成帶來的最大的優(yōu)點(diǎn)就是可以隨時部署上線。這樣就不會導(dǎo)致快要上線,到處是漏洞,到處是bug,手忙腳亂弄完以后還不能部署,嚴(yán)重影響上線時間。

4.極大程度避免低級錯誤

我們可以犯錯誤,但是犯低級錯誤就很不應(yīng)該。這里指的低級錯誤包括以下幾點(diǎn):編譯錯誤,安裝問題,接口問題,性能問題。
以天為單位的持續(xù)集成,可以很快發(fā)現(xiàn)編譯問題,自動打包直接無法通過。打完包以后,測試掃碼無法安裝,這種問題也會立即被暴露出來。接口問題和性能問題就有自動化測試腳本來發(fā)現(xiàn)。這些低級問題由持續(xù)集成來暴露展現(xiàn)出來,提醒我們避免低級錯誤。

Jenkins持續(xù)化集成工具

Jenkins的工作流程如圖所示


WechatIMG3.jpeg

2.Jenkins下載和安裝

Jenkins是基于Java開發(fā)的一種持續(xù)集成工具。所以呢,要使用Jenkins必須使用先安裝JDK。
JDK的下載地址

WechatIMG4.jpeg

Jenkins下載地址

WechatIMG5.jpeg

下載好JDK和Jenkins的安裝包后直接雙擊安裝就好,具體的就不截圖了,so easy。

WechatIMG6.jpeg

好啦,安裝好Jenkins后打開瀏覽器打開(http://localhost:8080)
就可以看到Jenkins的初始頁面了(如果不能打開應(yīng)該是JDK環(huán)境沒有安裝好,重新下載最新的JDK安裝一下,也有可能是8080端口被占用了)


這里需要一個初始密碼,頁面中的紅色字體也標(biāo)出了該密碼文件的路徑,不過一開始該文件是沒有讀寫權(quán)限的,需要先到找到/Users/Shared/Jenkins/Home/ 這個目錄下,改了/secrets/目錄的讀寫權(quán)限,右鍵顯示簡介,然后點(diǎn)擊鎖就可以改權(quán)限了。同樣的把/secrets/目錄里面的initialAdminPassword文件的權(quán)限改了,就可以打開initialAdminPassword文件獲取密碼了。
WechatIMG8.jpeg

把獲取到的密碼粘貼到剛剛的頁面,然后選擇繼續(xù)。

WechatIMG9.jpeg

完成之后會進(jìn)來一個選擇插件安裝的頁面(這里個人小建議就是選選擇第二個自定義的插件,因為如果選擇第一個安裝推薦的插件的話會太多了,等待的時間過長,而且可能會卡死了)

WechatIMG10.jpeg

選擇了第一個安裝默認(rèn)的插件的話如圖(我第一次安裝時就選擇了安裝推薦插件,但是等了很久,后來直接卡死了,于是我只能卸掉Jenkins重新跑一遍前面的流程,卸載Jenkins的方法

WechatIMG11.jpeg

還是選擇第二個吧,到時候初始化完畢了再到插件選擇安裝頁面安裝我們需要的插件即可~~~到了創(chuàng)建用戶的時候了


WechatIMG12.jpeg

路安裝過來,輸入用戶名,密碼,郵件這些,就算安裝完成了。

WechatIMG13.jpeg

3.jenkins插件安裝

接下來是插件安裝了

WechatIMG14.jpeg

WechatIMG16.jpeg

這里列一下我用到的插件
1.Xcode integration xcode的插件
2.Keychains and Provisioning Profiles Management 安裝證書的插件
3.Email Extension Plugin 發(fā)送郵件的插件
4.fir-plugin 上傳到fir的插件下載地址(http://blog.fir.im/jenkins/
5.Subversion Plug-in SVN的插件
下載過程中會出現(xiàn)這個頁面,等待下載完成更新頁面即可
WechatIMG17.jpeg

4.Jenkins證書配置

OK,插件安裝完畢了,下一步的準(zhǔn)備工作是證書的導(dǎo)入,同樣是系統(tǒng)管理--->Keychains and Provisioning Profiles Management(注意這個是安裝了Keychains and Provisioning Profiles Management插件后才會有的)

WechatIMG18.jpeg

然后進(jìn)來證書設(shè)置頁面,前往~/Library/keyChains/ 找到login.keychain文件,拖進(jìn)來證書安裝頁面,點(diǎn)擊upload上傳,會出現(xiàn)設(shè)置密碼,填電腦密碼和證書的名字。(這里有可能沒有l(wèi)ogin.keychain,而是login.keychain-db文件,一樣的替換掉就好)接著前往~/Library/MobileDevice/文件夾,將你的開發(fā)描述文件拖進(jìn)來upload

將~/Library/keyChains/ 下的login.keychain 及l(fā)ogin.keychain-db這兩個文件拷貝到/Users/Shared/Jenkins/Library/Keychains文件夾下面(沒有Keychains文件夾就創(chuàng)建一個)

將~/Library/MobileDevice/的整個文件夾Provisioning Profiles拷貝到/Users/Shared/Jenkins/Library/MobileDevice下面(沒有MobileDevice文件夾就創(chuàng)建一個)

一定要把Provisioning Profiles整個文件夾放到MobileDevice下面

一定要把Provisioning Profiles整個文件夾放到MobileDevice下面

一定要把Provisioning Profiles整個文件夾放到MobileDevice下面

最后到秘鑰里面,找到開發(fā)證書-->顯示簡介-->訪問控制修改為允許所有程序訪問此項目(Jenkins才可以訪問到我們的開發(fā)文件)
nice到這里我們的證書就配置完畢啦可以愉快的去構(gòu)建項目啦~~~~


WechatIMG19.jpeg
WechatIMG20.jpeg
WechatIMG21.jpeg
WechatIMG22.jpeg
WechatIMG23.jpeg

5.Jenkins構(gòu)建項目

回到Jenkins的首頁--->新建-->填寫項目名稱,這個自己喜歡!,選擇構(gòu)建項目類型,選擇一個自由風(fēng)格的項目,next Ok

WechatIMG24.jpeg

1.General默認(rèn)都不選就好,具體的作用可以點(diǎn)擊?都有詳細(xì)的說明

WechatIMG25.jpeg

2.源碼管理選擇SVN,copy源碼的SVN地址,然后addSVN用戶

WechatIMG26.jpeg
WechatIMG27.jpeg
WechatIMG28.jpeg

3.構(gòu)建觸發(fā)器選擇Poll SCM 輪詢的方法,輸入H/5 * * * * 表示五分鐘check一次SVN的路徑,如果源碼有變化就構(gòu)建。其他的可點(diǎn)擊?看具體的解釋

WechatIMG29.jpeg

4.構(gòu)建環(huán)境選擇Keychains就好

WechatIMG30.jpeg

5.構(gòu)建,增加構(gòu)建步驟里面選擇Xcode

WechatIMG31.jpeg
WechatIMG32.jpeg
WechatIMG33.jpeg

這里的輸出路徑 ${WORKSPACE}/build/ WORKSPACE指的是當(dāng)前的工作路徑,也可以自定義輸出路徑,其他的可以不用設(shè)置

WechatIMG34.jpeg

接著設(shè)置keychain,path填寫/Users/Shared/Jenkins/Library/Keychains/login.keychain,這個是固定的,就是我們剛剛他證書復(fù)制進(jìn)來的路徑,然后填寫密碼,密碼是電腦的開機(jī)密碼注意?。。?!

WechatIMG36.jpeg

如圖,這里的schema填寫的是xcode中工程的名稱

WechatIMG37.jpeg

如果你的工程師通過cocoapods管理的話那么就填寫Xcode Workspace File這個,不用填Xcode Project File。但是第一次你的代碼還沒有從SVN上面拉下來呢,所以并不知道這個工程路徑所在啊。所以第一次構(gòu)建的時候這里就留空先,等你的代碼從SVN上面clone下來后,找到/Users/Shared/Jenkins/Home/workspace/里面找到該工程的路徑在填進(jìn)去就好,嗯,我就是這么干的,如果有好方法記得分享給我一下呀~注意:該路徑后面不要帶.xcworkspace

6.構(gòu)成成功后的操作,上傳到fir平臺,這里選擇upload to fir.im,記得是安裝了fir-plugin才有這個。

WechatIMG38.jpeg
WechatIMG39.jpeg

fir.im Token是fir平臺的給你賬號唯一token,如果沒有去生成一下
IPA/APK Files (optional)二進(jìn)制包的路徑,可選的,如果上面ipa的輸出路徑是${WORKSPACE}/build/的話這里可以不填,我的就是。如果是自定義的輸出路徑的話可能需要,我暫時還沒有測試這里

WechatIMG40.jpeg

最后填寫保存就可以去構(gòu)建啦啦啦啦啦~~~

6.構(gòu)建

WechatIMG41.jpeg

回來主頁面后選擇立即構(gòu)建,就可以看到構(gòu)建的進(jìn)度了,配置就是剛剛的那些構(gòu)建的配置,可以進(jìn)去修改
下面的build history就是我們的構(gòu)建歷史了,如果是紅色的就是構(gòu)建失敗,如果是藍(lán)色的就是構(gòu)建成功,點(diǎn)擊小球可以進(jìn)去看構(gòu)建的日志,查看失敗的原因。好啦,今天就到這里了,shell腳本構(gòu)建還不會,有是時間研究會了再補(bǔ)上,然后后面會補(bǔ)上本人遇到的坑,都是淚~~~~~~~

WechatIMG42.jpeg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,996評論 2 374

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