《持續(xù)交付》——第三章--持續(xù)集成

為什么要做持續(xù)集成

在軟件開(kāi)發(fā)過(guò)程中耸别, 由于各個(gè)模塊之間的聯(lián)系涮因,開(kāi)發(fā)的單個(gè)模塊不能在試運(yùn)行環(huán)境中運(yùn)行装盯,所以在驗(yàn)收階段可能會(huì)出現(xiàn)各種錯(cuò)誤坷虑,集成效率就會(huì)因此降低。有了持續(xù)集成埂奈,每次的修改都可以運(yùn)行迄损,保證了程序的可執(zhí)行性,能夠及時(shí)發(fā)現(xiàn)錯(cuò)誤账磺。

持續(xù)集成需要注意的
  • 在持續(xù)集成服務(wù)器上提交自己新的代碼之前芹敌,要確保自己的環(huán)境運(yùn)行正常
  • 一旦構(gòu)建失敗要及時(shí)修復(fù)問(wèn)題
持續(xù)集成需要使用的測(cè)試
  • 單元測(cè)試:一般是對(duì)一些小單元的行為測(cè)試痊远,比如方法,函數(shù)等氏捞,不需要連接數(shù)據(jù)庫(kù)碧聪,系統(tǒng)文件,或網(wǎng)絡(luò)幌衣,也不需要部署應(yīng)用程序矾削,所以一般運(yùn)行速度非橙烂担快豁护。
  • 組件測(cè)試:用于測(cè)試程序中幾個(gè)組件的行為,同樣不需要啟動(dòng)整個(gè)程序欲间,但可能需要連接數(shù)據(jù)庫(kù)楚里,訪問(wèn)文件系統(tǒng)等,運(yùn)行時(shí)間較長(zhǎng)猎贴。
  • 驗(yàn)收測(cè)試:驗(yàn)證應(yīng)用程序是否滿足業(yè)務(wù)需求所定義的驗(yàn)收條件班缎。一般推薦將整個(gè)程序運(yùn)行于類(lèi)生產(chǎn)環(huán)境中,運(yùn)行時(shí)間長(zhǎng)她渴。

測(cè)試的作用:確認(rèn)所做的修改不會(huì)破壞現(xiàn)有的功能达址。

構(gòu)建可視化

可以使用外部設(shè)備將構(gòu)建信號(hào)顯示出來(lái),比如燈管信號(hào)趁耗,語(yǔ)音信號(hào)等沉唠。

我們?cè)诎汛a提交到共享的代碼庫(kù)之前一定要在本地的版本庫(kù)運(yùn)行所有的提交測(cè)試,確認(rèn)新增代碼的正確性苛败。

持續(xù)集成需要團(tuán)隊(duì)嚴(yán)格遵循紀(jì)律满葛,在提交代碼后構(gòu)建失敗要及時(shí)修復(fù),或者讓回滾到上一個(gè)可用版本罢屈,保證構(gòu)建能夠持續(xù)正常運(yùn)行嘀韧,在構(gòu)建失敗時(shí),要停止提交代碼缠捌,解決問(wèn)題后再開(kāi)始提交新的代碼锄贷。

小步頻繁提交需要快速運(yùn)行提交測(cè)試,一般我們對(duì)提交測(cè)試的運(yùn)行時(shí)間加以限制曼月,如果超時(shí)就讓構(gòu)建失敗谊却,為可頻繁提交作出保障。這種實(shí)踐需要強(qiáng)壯的測(cè)試十嘿。

本地化版本控制系統(tǒng)

在實(shí)際情況中因惭,我們可能會(huì)遇到因?yàn)榫W(wǎng)絡(luò)或者其他問(wèn)題無(wú)法連接到版本控制服務(wù)的情況,這個(gè)時(shí)候就有必要在本地建立一套持續(xù)集成系統(tǒng)了绩衷。
解決本地化版本控制系統(tǒng)的存取問(wèn)題:

  1. 將應(yīng)用程序分為多個(gè)組件
  2. 使用分布式或者支持多主庫(kù)拓?fù)浣Y(jié)構(gòu)的版本控制系統(tǒng)
分布式版本控制系統(tǒng)(Distributed Version Control System)

目前常用的有Git蹦魔,Mercurial
DVCS可以本地提交激率,不受網(wǎng)絡(luò)的影響
其核心特性是,每個(gè)倉(cāng)庫(kù)都包括項(xiàng)目的完整歷史勿决,方便代碼共享

小結(jié)
  • 在寫(xiě)代碼時(shí)要注意代碼的規(guī)范性乒躺,養(yǎng)成良好的習(xí)慣。比如命名習(xí)慣(目前采用駝峰命名法)低缩,代碼的格式等嘉冒。

  • 在使用持續(xù)集成實(shí)踐時(shí),團(tuán)隊(duì)的每個(gè)人都要嚴(yán)格遵循提交的原則咆繁,這樣才能保證構(gòu)建能夠保持運(yùn)行狀態(tài)讳推。這對(duì)于每個(gè)成員來(lái)說(shuō),高度的責(zé)任感是合作的基礎(chǔ)玩般。

  • 分布式版本控制系統(tǒng)银觅,在不連接主服務(wù)器的情況下,也可以提交代碼坏为,適合通信狀態(tài)不佳的情況究驴。實(shí)際上在做持續(xù)集成時(shí)如果能夠改善通信狀況的話,一般不建議換到分布式版本控制系統(tǒng)(備選方案)匀伏。

  • 在使用DVCS比如我們常用的GitHub時(shí)洒忧,要盡量避免使用分支。

疑問(wèn)
  1. 什么時(shí)候有必要進(jìn)行測(cè)試驅(qū)動(dòng)開(kāi)發(fā)够颠?
  2. DVCS的使用中為每個(gè)代碼庫(kù)都在持續(xù)集成服務(wù)器上建立一個(gè)構(gòu)建熙侍,分支代碼庫(kù)數(shù)量很多時(shí)對(duì)于服務(wù)器有什么影響?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摧找,一起剝皮案震驚了整個(gè)濱河市核行,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹬耘,老刑警劉巖芝雪,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異综苔,居然都是意外死亡惩系,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)如筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)堡牡,“玉大人,你說(shuō)我怎么就攤上這事杨刨∥畋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵妖胀,是天一觀的道長(zhǎng)芥颈。 經(jīng)常有香客問(wèn)我惠勒,道長(zhǎng),這世上最難降的妖魔是什么爬坑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任纠屋,我火速辦了婚禮,結(jié)果婚禮上盾计,老公的妹妹穿的比我還像新娘售担。我一直安慰自己,他們只是感情好署辉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布族铆。 她就那樣靜靜地躺著,像睡著了一般涨薪。 火紅的嫁衣襯著肌膚如雪骑素。 梳的紋絲不亂的頭發(fā)上炫乓,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天刚夺,我揣著相機(jī)與錄音,去河邊找鬼末捣。 笑死侠姑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的箩做。 我是一名探鬼主播莽红,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼邦邦!你這毒婦竟也來(lái)了安吁?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤燃辖,失蹤者是張志新(化名)和其女友劉穎鬼店,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體黔龟,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妇智,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氏身。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巍棱。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蛋欣,靈堂內(nèi)的尸體忽然破棺而出航徙,到底是詐尸還是另有隱情,我是刑警寧澤陷虎,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布到踏,位于F島的核電站倒得,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏夭禽。R本人自食惡果不足惜霞掺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讹躯。 院中可真熱鬧菩彬,春花似錦、人聲如沸潮梯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秉馏。三九已至耙旦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萝究,已是汗流浹背免都。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帆竹,地道東北人绕娘。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像栽连,于是被迫代替她去往敵國(guó)和親险领。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • 集成是軟件開(kāi)發(fā)的最后階段秒紧,即將分支合并起來(lái)绢陌,使軟件能夠運(yùn)行起來(lái)。而持續(xù)集成就指的是在開(kāi)發(fā)過(guò)程中隨時(shí)做集成熔恢,小步前進(jìn)...
    Wyyyn閱讀 233評(píng)論 0 0
  • 在上一章中了解到如何對(duì)項(xiàng)目的配置進(jìn)行管理脐湾,這是項(xiàng)目開(kāi)發(fā)的一個(gè)基礎(chǔ)步驟,對(duì)于團(tuán)隊(duì)的協(xié)作绩聘,版本的重現(xiàn)都是起很重要的作用...
    DouQing閱讀 412評(píng)論 0 1
  • 這一章主要講了如何實(shí)現(xiàn)持續(xù)集成和持續(xù)集成存在的必要性沥割。 持續(xù)集成 持續(xù)集成要求每當(dāng)有人提交代碼時(shí),就對(duì)整個(gè)應(yīng)用進(jìn)行...
    落花的季節(jié)閱讀 308評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理凿菩,服務(wù)發(fā)現(xiàn)机杜,斷路器,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • 不知道看官大人是否有過(guò)這樣的疑惑衅谷?一臺(tái)計(jì)算機(jī)椒拗,插上網(wǎng)線是不是就可以直接上網(wǎng)了呢?其實(shí)沒(méi)有這么簡(jiǎn)單,需要配置本機(jī)IP...
    采風(fēng)JS閱讀 4,749評(píng)論 2 56