企業(yè)軟件項目的持續(xù)集成_第1頁
企業(yè)軟件項目的持續(xù)集成_第2頁
企業(yè)軟件項目的持續(xù)集成_第3頁
企業(yè)軟件項目的持續(xù)集成_第4頁
企業(yè)軟件項目的持續(xù)集成_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 企業(yè)軟件項目的持續(xù)集成Docker 微信號 dockerone功能介紹 最專業(yè)的Docker文章,最權(quán)威的Docker新聞。關(guān)注容器生態(tài)圈的發(fā)展。持續(xù)集成(Continuous Integration),也就是我們經(jīng)常說的 CI,是現(xiàn)代軟件開發(fā)技術(shù)的基礎(chǔ)。本文論述了當(dāng)前軟件開發(fā)過程中存在的問題,講解了持續(xù)集成、持續(xù)集成服務(wù)器的概念,最終探討了為什么我們需要持續(xù)集成來解決這些問題。當(dāng)前軟件開發(fā)過程存在的問題在沒有應(yīng)用持續(xù)集成之前,傳統(tǒng)的開發(fā)模式是這樣的:項目一開始是先劃分好模塊,分配模塊給相應(yīng)的開發(fā)人員;開發(fā)人員開發(fā)好一個模塊就進行單元測試;等所有的模塊都開發(fā)完成之后,由項目經(jīng)理對所有代碼進行

2、集成;集成后的項目由項目經(jīng)理部署到測試服務(wù)器上,被交由測試人員進行集成測試;測試過程中出現(xiàn) Bug 就提把問題記錄進行 Bug 列表中;項目經(jīng)理分配 Bug 給相應(yīng)的責(zé)任人進行修改;修改完成后,項目經(jīng)理再次對項目進行集成,并部署到測試服務(wù)器上;測試人員在下一次的集成測試中進行回歸測試;通過通過之后就部署到生產(chǎn)環(huán)境中;如果測試不通過,則重復(fù)上述“分配 Bug - 修改 Bug - 集成代碼 - 部署到測* 試服務(wù)器上 - 集成測試”工作。這個過程中可能會出現(xiàn)如下問題:Bug 總是在最后才發(fā)現(xiàn)隨著軟件技術(shù)的發(fā)展,軟件規(guī)模也在擴大,軟件需求越來越復(fù)雜,軟件已經(jīng)不能簡單地通過劃分模塊的方式來開發(fā),往往

3、需要在項目內(nèi)部互相合作,模塊之間存在一定的依賴關(guān)系,那么早期就存在的 Bug 往往會在最后集成的時候才被發(fā)現(xiàn)。越到項目后期,問題越難解決很多開發(fā)者需要在集成階段花費大量的時間來尋找 Bug 的根源,加上軟件的復(fù)雜性,問題的根源很難定位。而且我們都清楚,間隔的時間越久,Bug 修復(fù)的成本越高,因為連開發(fā)人員自己都忘了當(dāng)初寫得是什么鬼代碼,從而不得不從頭閱讀代碼、理解代碼。軟件交付時機無法保障正是因為我們無法及時修復(fù) Bug,或者是沒能在早期就修復(fù) Bug,從而令整個修復(fù) Bug 的周期拉長了。不管怎么樣,我們不可能把明知存在 Bug 的軟件交付給客戶。而且,大量沒有在前期預(yù)估到的工作量產(chǎn)生了開發(fā)

4、人員不得不花費大把時間在查找 Bug 上;測試人員不斷的需要進行回歸測試;項目經(jīng)理不得不疲命于該死的代碼的集成、部署這些重復(fù)性工作最終導(dǎo)致整個項目的周期拉長,交付時間點往后拖。程序經(jīng)常需要變更某些項目,程序會經(jīng)常需要變更,特別是敏捷開發(fā)的實踐者。由于產(chǎn)品經(jīng)理在與客戶交流過程中,往往實際的軟件就是最好的原型,所以軟件會被當(dāng)作原型作為跟客戶交流的工具。當(dāng)然,客戶最希望的當(dāng)然是客戶的想法能夠馬上反映到原型上,這會導(dǎo)致程序會經(jīng)常被修改的。那么也就意味著“分配 Bug - 修改 Bug - 集成代碼 - 部署到測試服務(wù)器上 - 集成測試”工作無形又爆增了。無效的等待變多有可能開發(fā)在等集成其他人的模塊;測

5、試人員在等待開發(fā)人員修復(fù) Bug;產(chǎn)品經(jīng)理在等待新版本上線好給客戶做演示;項目經(jīng)理在等待其他人提交代碼。不管怎么樣,等待意味低效。用戶的滿足度低這里的用戶是廣義的,可以指最終的客戶,也可以是產(chǎn)品經(jīng)理、公司領(lǐng)導(dǎo)、測試人員,甚至可能是開發(fā)人員自己。你想想看,本來三個月做完的項目被拉長到了九個月甚至一年,用戶能滿意嗎!產(chǎn)品經(jīng)理、公司領(lǐng)導(dǎo)經(jīng)常需要拿項目作為演示的原型,結(jié)果告訴我在演示前一刻發(fā)現(xiàn)還有很多 Bug 沒有解決,項目啟動不了無法訪問,這叫人情何以堪。持續(xù)集成、持續(xù)集成服務(wù)器的概念那么好了,在上面論述的這些問題中,我們發(fā)現(xiàn)有些工作是無法避免的,比如測試工作、修改程序、集成工作、部署工作。但其實在

6、整個工作流程上,是存在可以優(yōu)化的空間的,比如,集成測試的工作是否可以提前做?可否有自動化的手段來代替測試、集成、部署工作?圍繞這些,軟件行業(yè)的大師們提出“持續(xù)集成”口號。什么是持續(xù)集成、持續(xù)集成服務(wù)器在軟件工程中,持續(xù)集成(CI)是指將所有開發(fā)者工作副本每天多次合并到主干的做法。 Grady Booch 在1991年的 Booch method 中首次命名并提出了 CI 的概念,盡管在當(dāng)時他并不主張每天多次集成。而 XP(Extreme programming,極限編程)采用了 CI 的概念,并提倡每天不止一次集成。而持續(xù)集成服務(wù)器就是能夠采用自動化的手段,來解放人的雙手,實現(xiàn)項目持續(xù)集成的工

7、具。與之配套的軟件有 TeamCity、Jenkins、Go 等。怎么樣才算是“持續(xù)”對于一天需要集成多少次數(shù),并沒有一個明確的定義。一般就是按照自己項目的實際需要來設(shè)置一定的頻率,少則可能幾次,多則可能達幾十次??梢栽O(shè)置按照代碼的變更來觸發(fā)集成,或者設(shè)置一個固定時間周期來集成,也可以手工點擊集成的按鈕來“一鍵集成”。持續(xù)集成的工作流程當(dāng)開始更改代碼時,開發(fā)人員會從代碼庫(如 SVN、Git 等)獲取當(dāng)前代碼庫的副本。當(dāng)其他開發(fā)人員將更改的代碼提交到代碼庫時,此副本將逐漸停止反映代碼庫中的代碼。代碼分支保持檢出的時間越長,當(dāng)開發(fā)人員分支重新集成到主線時,多個集成沖突和故障的風(fēng)險就越大。當(dāng)開發(fā)人

8、員向代碼庫提交代碼時,他們必須首先更新他們的代碼,以反映代碼庫中的最新更改。當(dāng)存儲庫與開發(fā)人員的副本不同,他們必須要花時間來先處理沖突。持續(xù)集成的好處解放了重復(fù)性勞動自動化部署工作可以解放了集成、測試、部署等重復(fù)性勞動,而且機器集成的頻率明顯可以比手工的高很多。更快地修復(fù)問題由于持續(xù)集成更早的獲取變更,更早的進入測試,也就能更早的發(fā)現(xiàn)問題,解決問題的成本顯著下降。更快地交付成果及早集成、及早測試減少了缺陷遺留到部署環(huán)節(jié)的機會。在某些情況下,更早地查找錯誤還會減少解決錯誤所需的工作量。如果集成服務(wù)器對代碼進行構(gòu)建過程中發(fā)現(xiàn)錯誤,可以及時發(fā)送郵件或者短信提供給開發(fā)人員進行修復(fù)。如果集成服務(wù)器在部署

9、環(huán)節(jié)發(fā)現(xiàn)當(dāng)前版本有問題不可用,集成服務(wù)器會將部署回退到上一個版本。這樣服務(wù)器上始終都會有一個可用的版本。減少手工的錯誤人與機器的一個最大的區(qū)別是,在重復(fù)性動作上,人容易犯錯,而機器犯錯的幾率幾乎為零。所以,當(dāng)我們搭建完成集成服務(wù)器后,以后的事就交給集成服務(wù)器來打理吧。減少了等待時間持續(xù)集成縮短了從開發(fā)、集成、測試、部署各個環(huán)節(jié)的時間,從而也就縮短了中間可以出現(xiàn)的等待時間。持續(xù)集成,意味著開發(fā)、集成、測試、部署也得以持續(xù)。更高的產(chǎn)品質(zhì)量集成服務(wù)器往往提供 Code review、代碼質(zhì)量檢測等功能。對代碼不規(guī)范或者有錯誤的地方會進行標(biāo)識,也可以設(shè)置郵件、短信等進行告警。而開發(fā)人員通過 Code

10、review 也可以持續(xù)提高編程的能力。持續(xù)集成的最佳實踐頻繁檢出代碼為了讓你本地的副本和代碼庫中的版本最小差異化,建議頻繁檢出代碼。有時候代碼沖突無可避免,但最小差異化最容易解決。而且,越早發(fā)現(xiàn)的問題,解決成本也最低。頻繁提交代碼這個與第1條的原理類似,頻繁提交代碼,可以讓其他人的檢出副本和代碼庫中的版本最小差異化。減少分支,回歸主干雖然代碼管理工具都支持分支的概念,但應(yīng)盡量減少其使用。假設(shè)有多個分支并行,應(yīng)及早將變更集成到主干中,而不是同時維護軟件的多個版本。主干作為軟件開發(fā)的工作版本。使用自動化構(gòu)建可以使用 Maven、Ant 等來實現(xiàn)自動化構(gòu)建,這些工具可以幫助你在構(gòu)建過程中實現(xiàn)自動化

11、測試。前提是你有寫單元測試用例,比如JUnit等。提交自測在提交工作之前,每個程序員必須本地集成所有的代碼,做一個完整的構(gòu)建和運行,并通過所有單元測試。這樣就減少了集成測試在集成服務(wù)器上構(gòu)建失敗的風(fēng)險。當(dāng)前狀態(tài)對于每個人都可見集成服務(wù)器在持續(xù)集成過程中發(fā)現(xiàn)問題,應(yīng)能發(fā)送告警給相關(guān)的干系人。同時,也可以在墻上等醒目的位置設(shè)置一個大屏顯示器,將集成服務(wù)器的狀態(tài)實時展現(xiàn)在大屏上,方便提醒組員“趕緊回去解決問題”!持續(xù)集成可能會面臨的挑戰(zhàn)團隊人員思想上的抵觸針對這個問題,可以通過設(shè)置一定的持續(xù)集成技術(shù)培訓(xùn)、宣講得到改觀。無法接受新事物:不管怎么樣,求穩(wěn)心態(tài)的人還是多??偸怯腥苏J(rèn)為老的技術(shù)代表穩(wěn)定,新的事物往往會帶來問題。認(rèn)為手工集成也沒有多少工作量:不是所有的人都參與到了整個持續(xù)集成的環(huán)節(jié),所以沒有辦法認(rèn)識到問題全貌。管理層的抵觸針對這一點,可以從開發(fā)人員的成本和持續(xù)集成的投入(軟硬件)的成本上兩者做下估算。培訓(xùn)持續(xù)集成需要投入資金啊,沒錢。持續(xù)集成服務(wù)器要增加軟硬件成本啊,沒錢。開發(fā)人員領(lǐng)了那么高的工資,多干活多加班應(yīng)該啊。生產(chǎn)環(huán)境的復(fù)雜

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論