本文轉(zhuǎn)載自:Jenkins 中文社區(qū)
本文介紹了持續(xù)集成的定義,并解釋了實(shí)施CI的各種收益與挑戰(zhàn)
毫無疑問,持續(xù)集成( CI )已成為一個(gè)軟件開發(fā)的主流原則同诫。CI 的收益在業(yè)界眾所周知的弦悉,并且很難找到反對實(shí)施它的人矾湃。
在這里,我想把那些收益收集起來放到一個(gè)中心化的地方惊完。但是我認(rèn)為扮演反面角色并試圖找出持續(xù)集成的弊端或挑戰(zhàn)也是很有趣的僵芹。
什么是持續(xù)集成?
從根本上說小槐, 持續(xù)集成( CI )是一種開發(fā)實(shí)踐拇派,開發(fā)人員每天都要將代碼集成到共享的倉庫中。在該倉庫中凿跳,代碼被自動構(gòu)建進(jìn)行驗(yàn)證用來在這個(gè)流程中檢驗(yàn)盡早的發(fā)現(xiàn)任何問題件豌。這允許團(tuán)隊(duì)花更少的時(shí)間回溯,而花更多的時(shí)間構(gòu)建新特性控嗜。
持續(xù)集成的收益
1茧彤、緩解風(fēng)險(xiǎn)
據(jù) Martin Fowler 說,持續(xù)集成的最大收益是減輕風(fēng)險(xiǎn)疆栏。由于延遲了代碼集成曾掂,團(tuán)隊(duì)將不斷增加合并沖突的數(shù)量和嚴(yán)重性。當(dāng)團(tuán)隊(duì)頻繁集成(使用自動構(gòu)建)壁顶,他們減輕了潛在風(fēng)險(xiǎn)的數(shù)量珠洗,因?yàn)樗麄兛偸侵老到y(tǒng)的當(dāng)前狀態(tài)。
2若专、質(zhì)量保證
實(shí)施持續(xù)集成的團(tuán)隊(duì)對他們的操作更有信心许蓖。他們知道自動構(gòu)建會立即捕獲缺陷,這使他們能夠保證質(zhì)量调衰。 他們也不會猜測系統(tǒng)中 bug 的數(shù)量膊爪,這允許他們能夠向隊(duì)友提供準(zhǔn)確的數(shù)量,并為客戶提供更好的服務(wù)窖式。
3蚁飒、提高可見性和加強(qiáng)團(tuán)隊(duì)合作
自動構(gòu)建為團(tuán)隊(duì)提供了對其系統(tǒng)的完全可見性。他們知道問題的數(shù)量萝喘,并能快速的解決問題淮逻。提高可見性可以讓團(tuán)隊(duì)有機(jī)會在小問題變成大之前通過協(xié)作解決琼懊。
持續(xù)集成的挑戰(zhàn)
1、組織文化變革
一些企業(yè)更喜歡傳統(tǒng)的方法爬早,并且可能很難實(shí)施持續(xù)集成哼丈。 他們必須對員工進(jìn)行再培訓(xùn),這就意味著要對現(xiàn)有的業(yè)務(wù)進(jìn)行大修筛严。管理者可能會抵制因?yàn)槌掷m(xù)集成并不能幫助他們實(shí)現(xiàn)公司的直接目標(biāo)(例如:金錢在質(zhì)量之上)醉旦。
2、難以維護(hù)
構(gòu)建一個(gè)自動化的代碼倉庫不是一個(gè)簡單的任務(wù)桨啃。 團(tuán)隊(duì)必須構(gòu)建適當(dāng)?shù)臏y試套件车胡,并花時(shí)間編寫測試用例,而不是開發(fā)代碼照瘾。 起初匈棘,這可能會讓他們放慢速度,讓他們對按時(shí)完成自己的項(xiàng)目失去信心析命。如果測試套件不穩(wěn)定主卫,它可能在某些天內(nèi)完美地工作,但其他天可能不起作用鹃愤。 然后團(tuán)隊(duì)將不得不花費(fèi)更多的時(shí)間來弄清楚發(fā)生了什么簇搅。
3、大量的錯(cuò)誤信息
對于較大的開發(fā)團(tuán)隊(duì)软吐,他們可能每天都會看到 CI 錯(cuò)誤消息瘩将,并開始忽略它們,因?yàn)樗鼈冞€有其他任務(wù)和關(guān)注點(diǎn)关噪。 他們可能會開始將一個(gè)破壞的構(gòu)建視為一個(gè)正常的事情鸟蟹,并且缺陷可能開始堆積在一起。