持續(xù)集成這篇文章已經(jīng)準(zhǔn)備了挺長(zhǎng)時(shí)間,魷魚很多原因沒(méi)有動(dòng)手寫來(lái)來(lái)题篷,嘻嘻镇辉。
持續(xù)集成其實(shí)包括幾個(gè)概念:持續(xù)集成屡穗、持續(xù)交付以及持續(xù)部署,環(huán)環(huán)相扣的一種運(yùn)作方式忽肛。
持續(xù)集成
持續(xù)集成急頻繁地(至少一天一次)將代碼集成到主干村砂,通過(guò)自動(dòng)化的構(gòu)建(編譯、部署麻裁、測(cè)試)來(lái)對(duì)新交付的代碼進(jìn)行功能以及整體的測(cè)試箍镜。由于項(xiàng)目組的每一個(gè)開發(fā)成員每一天都需要提交代碼源祈,因此需要每天都更新本地的代碼(svn煎源,git)。
這樣頻繁的交付代碼香缺,有什么好處呢手销?第一點(diǎn)即可以盡早發(fā)現(xiàn)Bug。如果項(xiàng)目沒(méi)有及早進(jìn)行測(cè)試图张,而是程序員進(jìn)行單元測(cè)試之后繼續(xù)敲下一個(gè)功能模塊的代碼锋拖,等到上線前最后一兩周才交給測(cè)試組測(cè)試,那么潛在Bug的數(shù)量與影響是不可預(yù)計(jì)的祸轮。持續(xù)集成可以有效地避免這種情況兽埃,每日集成將風(fēng)險(xiǎn)控制在可接受范圍內(nèi)。第二點(diǎn)增加項(xiàng)目可見性适袜,可見性是基于兩個(gè)方面的柄错,一方面是為項(xiàng)目提供有效決策,另一方面是能為團(tuán)隊(duì)提供有效的項(xiàng)目趨勢(shì)苦酱。有效決策售貌,即持續(xù)集成為項(xiàng)目構(gòu)建狀態(tài)和品質(zhì)提供了及時(shí)地信息,依據(jù)這些信息疫萤,團(tuán)隊(duì)leader可以及時(shí)進(jìn)行調(diào)整:設(shè)計(jì)調(diào)整颂跨、功能點(diǎn)、測(cè)試扯饶、部署等恒削。項(xiàng)目趨勢(shì)池颈,由于經(jīng)常集成(一天多次,比如團(tuán)隊(duì)有10個(gè)開發(fā)蔓同,則一天集成10次)可以體現(xiàn)出項(xiàng)目的一些基本趨勢(shì)饶辙,build成功還是失敗,以及對(duì)應(yīng)的次數(shù)斑粱,總體品質(zhì)等等弃揽。
持續(xù)集成要求的關(guān)鍵詞有很多,比如統(tǒng)一的代碼庫(kù)则北,自動(dòng)化測(cè)試矿微,自動(dòng)化部署,要求開發(fā)團(tuán)隊(duì)成員每天提交代碼等等尚揣,無(wú)一不體現(xiàn)著“持續(xù)”二字涌矢。
持續(xù)交付
持續(xù)交付也有一個(gè)核心思想,主干代碼一直處于可以交付的狀態(tài)快骗。這樣意味著娜庇,主干代碼能通過(guò)各種測(cè)試、質(zhì)量有保障方篮。持續(xù)交付作為持續(xù)集成的一個(gè)重要部分名秀,要求頻繁交付,供測(cè)試團(tuán)隊(duì)or用戶進(jìn)行評(píng)審藕溅。
持續(xù)部署
持續(xù)部署這一動(dòng)作發(fā)生在持續(xù)交付之后匕得,此時(shí)代碼已經(jīng)通過(guò)測(cè)試團(tuán)隊(duì)or用戶的評(píng)審,功能巾表、質(zhì)量達(dá)到了上線的要求汁掠。
整體流程似乎也體現(xiàn)了敏捷的思想,個(gè)人感覺(jué)和敏捷天生是一對(duì)集币,嘻嘻考阱。