【Jenkins】持续集成、持续交付与持续部署
持續(xù)集成、持續(xù)交付與持續(xù)部署,都是軟件開發(fā)過程中的很好的實(shí)踐。
一、持續(xù)部署
裝修廚房
全部裝好之后發(fā)現(xiàn)燈不亮,電路有問題;冷熱水裝反了,管路有問題。這些問題要解決就必須把地磚、墻磚拆掉——一個(gè)環(huán)節(jié)有問題,其他環(huán)節(jié)跟著返工。
那怎么做會(huì)好一些呢?任何安裝完成及時(shí)測(cè)試,確保其可以正常工作。
項(xiàng)目開發(fā)
開發(fā)過程中進(jìn)行單元測(cè)試能夠通過,但是部署到服務(wù)器上運(yùn)行出現(xiàn)問題。
那怎么做會(huì)好一些呢?僅僅單元測(cè)試還不夠,各個(gè)模塊都必須能夠在服務(wù)器上運(yùn)行。
關(guān)注點(diǎn)
持續(xù)部署的關(guān)注點(diǎn)在于項(xiàng)目功能部署至服務(wù)器后可以運(yùn)行,為下一步測(cè)試環(huán)節(jié)或最終用戶正式使用做好準(zhǔn)備。
二、持續(xù)集成
裝修廚房
裝修廚房時(shí)我們需要鋪地磚,如果把所有地磚都切好再拿去鋪就會(huì)發(fā)現(xiàn):每一塊地磚單獨(dú)看都是好的,但是實(shí)際鋪的時(shí)候,把所有地磚整合起來,發(fā)現(xiàn)和廚房地面總體尺寸不匹配,邊邊角角的地磚需要重新切,時(shí)間和物料成本陡然升高。
那怎么做會(huì)好一些呢?切一塊鋪一塊,根據(jù)需要的尺寸來切,盡早發(fā)現(xiàn)尺寸變化,避免返工。
項(xiàng)目開發(fā)
各個(gè)小組分別負(fù)責(zé)各個(gè)具體模塊開發(fā),本模塊獨(dú)立測(cè)試雖然能夠通過,但是上線前夕將所有模塊整合到一起集成測(cè)試卻發(fā)現(xiàn)很多問題,想要解決就需要把很多代碼返工重寫而且仍然有可能有問題,但現(xiàn)在時(shí)間很可能不夠了。
那怎么做會(huì)好一些呢?經(jīng)常性、頻繁的把所有模塊集成在一起進(jìn)行測(cè)試,有問題盡早發(fā)現(xiàn),這就是持續(xù)集成。
關(guān)注點(diǎn)
持續(xù)集成的關(guān)注點(diǎn)在于盡早發(fā)現(xiàn)項(xiàng)目整體運(yùn)行問題,盡早解決。
三、持續(xù)交付
裝修廚房
全部裝修好之后房屋主人來驗(yàn)收,各項(xiàng)功能都正常,但是水龍頭的樣式主人不喜歡,灶臺(tái)的位置主人不滿意,要求返工。
那怎么做會(huì)好一些呢?房屋主人隨時(shí)查看裝修進(jìn)度,施工團(tuán)隊(duì)及時(shí)調(diào)整。
項(xiàng)目開發(fā)
項(xiàng)目的各個(gè)升級(jí)版本之間間隔時(shí)間太長(zhǎng),對(duì)用戶反饋感知遲鈍,無法精確改善用戶體驗(yàn),用戶流失嚴(yán)重。
那怎么做會(huì)好一些呢?用小版本不斷進(jìn)行快速迭代,不斷收集用戶反饋信息,用最快的速度改進(jìn)優(yōu)化。
關(guān)注點(diǎn)
持續(xù)交付的關(guān)注點(diǎn)在于研發(fā)團(tuán)隊(duì)的最新代碼能夠盡快讓最終用戶體驗(yàn)到。
四、總體目標(biāo)
好處1:降低風(fēng)險(xiǎn)
一天中進(jìn)行多次的集成,并做了相應(yīng)的測(cè)試,這樣有利于檢查缺陷,了解軟件的健康狀況,減少假定。
好處2:減少重復(fù)過程
產(chǎn)生重復(fù)過程有兩個(gè)方面的原因,一個(gè)是編譯、測(cè)試、打包、部署等等固定操作都必須要做,無法省略任何一個(gè)環(huán)節(jié);另一個(gè)是一個(gè)缺陷如果沒有及時(shí)發(fā)現(xiàn),有可能導(dǎo)致后續(xù)代碼的開發(fā)方向是錯(cuò)誤的,要修復(fù)問題需要重新編寫受影響的所有代碼。
而使用 Jenkins 等持續(xù)集成工具既可以把構(gòu)建環(huán)節(jié)從手動(dòng)完成轉(zhuǎn)換為自動(dòng)化完成,又可以通過增加集成頻次盡早發(fā)現(xiàn)缺陷避免方向性錯(cuò)誤。
好處3:任何時(shí)間、任何地點(diǎn)生成可部署的軟件
持續(xù)集成可以讓您在任何時(shí)間發(fā)布可以部署的軟件。從外界來看,這是持續(xù)集成最明顯的好處,我們可以對(duì)改進(jìn)軟件品質(zhì)和減少風(fēng)險(xiǎn)說起來滔滔不絕,但對(duì)于客戶來說,可以部署的軟件產(chǎn)品是最實(shí)際的資產(chǎn)。利用持續(xù)集成,您可以經(jīng)常對(duì)源代碼進(jìn)行一些小改動(dòng),并將這些改動(dòng)和其他的代碼進(jìn)行集成。如果出現(xiàn)問題,項(xiàng)目成員馬上就會(huì)被通知到,問題會(huì)第一時(shí)間被修復(fù)。不采用持續(xù)集成的情況下,這些問題有可能到交付前的集成測(cè)試的時(shí)候才發(fā)現(xiàn),有可能會(huì)導(dǎo)致延遲發(fā)布產(chǎn)品,而在急于修復(fù)這些缺陷的時(shí)候又有可能引入新的缺陷,最終可能導(dǎo)致項(xiàng)目失敗。
好處4:增強(qiáng)項(xiàng)目的可見性
持續(xù)集成讓我們能夠注意到趨勢(shì)并進(jìn)行有效的決策。如果沒有真實(shí)或最新的數(shù)據(jù)提供支持,項(xiàng)目就會(huì)遇到麻煩,每個(gè)人都會(huì)提出他最好的猜測(cè)。通常,項(xiàng)目成員通過手工收集這些信息,增加了負(fù)擔(dān),也很耗時(shí)。持續(xù)集成可以帶來兩點(diǎn)積極效果:
(1) 有效決策:持續(xù)集成系統(tǒng)為項(xiàng)目構(gòu)建狀態(tài)和品質(zhì)指標(biāo)提供了及時(shí)的信息,有些持續(xù)集成系統(tǒng)可以報(bào)告功能完成度和缺陷率。
(2) 注意到趨勢(shì):由于經(jīng)常集成,我們可以看到一些趨勢(shì),如構(gòu)建成功或失敗、總體品質(zhì)以及其它的項(xiàng)目信息。
好處5:建立團(tuán)隊(duì)對(duì)開發(fā)產(chǎn)品的信心
持續(xù)集成可以建立開發(fā)團(tuán)隊(duì)對(duì)開發(fā)產(chǎn)品的信心,因?yàn)樗麄兦宄闹烂恳淮螛?gòu)建的結(jié)果,他們知道他們對(duì)軟件的改動(dòng)造成了哪些影響,結(jié)果怎么樣。
Jenkins的使用
不使用持續(xù)集成:
使用持續(xù)集成:
Jinkins+SVN持續(xù)集成環(huán)境搭建
準(zhǔn)備工作:開啟三個(gè)虛擬機(jī),一個(gè)跑SVN,一個(gè)跑Kenkins,一個(gè)跑項(xiàng)目
Jenkins+GitHub持續(xù)集成環(huán)境搭建
總結(jié)
以上是生活随笔為你收集整理的【Jenkins】持续集成、持续交付与持续部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python 2.7】str和unic
- 下一篇: 《重构:改善既有代码的设计》阅读笔记