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的工作流程如圖所示
2.Jenkins下載和安裝
Jenkins是基于Java開發(fā)的一種持續(xù)集成工具。所以呢,要使用Jenkins必須使用先安裝JDK。
JDK的下載地址
Jenkins下載地址
下載好JDK和Jenkins的安裝包后直接雙擊安裝就好,具體的就不截圖了,so easy。
好啦,安裝好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文件獲取密碼了。
把獲取到的密碼粘貼到剛剛的頁面,然后選擇繼續(xù)。
完成之后會進(jìn)來一個選擇插件安裝的頁面(這里個人小建議就是選選擇第二個自定義的插件,因為如果選擇第一個安裝推薦的插件的話會太多了,等待的時間過長,而且可能會卡死了)
選擇了第一個安裝默認(rèn)的插件的話如圖(我第一次安裝時就選擇了安裝推薦插件,但是等了很久,后來直接卡死了,于是我只能卸掉Jenkins重新跑一遍前面的流程,卸載Jenkins的方法)
還是選擇第二個吧,到時候初始化完畢了再到插件選擇安裝頁面安裝我們需要的插件即可~~~到了創(chuàng)建用戶的時候了
路安裝過來,輸入用戶名,密碼,郵件這些,就算安裝完成了。
3.jenkins插件安裝
接下來是插件安裝了
這里列一下我用到的插件
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)這個頁面,等待下載完成更新頁面即可
4.Jenkins證書配置
OK,插件安裝完畢了,下一步的準(zhǔn)備工作是證書的導(dǎo)入,同樣是系統(tǒng)管理--->Keychains and Provisioning Profiles Management(注意這個是安裝了Keychains and Provisioning Profiles Management插件后才會有的)
然后進(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)建項目啦~~~~
5.Jenkins構(gòu)建項目
回到Jenkins的首頁--->新建-->填寫項目名稱,這個自己喜歡!,選擇構(gòu)建項目類型,選擇一個自由風(fēng)格的項目,next Ok
1.General默認(rèn)都不選就好,具體的作用可以點(diǎn)擊?都有詳細(xì)的說明
2.源碼管理選擇SVN,copy源碼的SVN地址,然后addSVN用戶
3.構(gòu)建觸發(fā)器選擇Poll SCM 輪詢的方法,輸入H/5 * * * * 表示五分鐘check一次SVN的路徑,如果源碼有變化就構(gòu)建。其他的可點(diǎn)擊?看具體的解釋
4.構(gòu)建環(huán)境選擇Keychains就好
5.構(gòu)建,增加構(gòu)建步驟里面選擇Xcode
這里的輸出路徑 ${WORKSPACE}/build/ WORKSPACE指的是當(dāng)前的工作路徑,也可以自定義輸出路徑,其他的可以不用設(shè)置
接著設(shè)置keychain,path填寫/Users/Shared/Jenkins/Library/Keychains/login.keychain,這個是固定的,就是我們剛剛他證書復(fù)制進(jìn)來的路徑,然后填寫密碼,密碼是電腦的開機(jī)密碼注意?。。?!
如圖,這里的schema填寫的是xcode中工程的名稱
如果你的工程師通過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才有這個。
fir.im Token是fir平臺的給你賬號唯一token,如果沒有去生成一下
IPA/APK Files (optional)二進(jìn)制包的路徑,可選的,如果上面ipa的輸出路徑是${WORKSPACE}/build/的話這里可以不填,我的就是。如果是自定義的輸出路徑的話可能需要,我暫時還沒有測試這里
最后填寫保存就可以去構(gòu)建啦啦啦啦啦~~~
6.構(gòu)建
回來主頁面后選擇立即構(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ǔ)上本人遇到的坑,都是淚~~~~~~~