您好,登錄后才能下訂單哦!
這篇文章主要講解了“Travis CI是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Travis CI是什么”吧!
Travis CI 一開始僅僅是個(gè)想法,在當(dāng)時(shí)甚至還有些理想化。在這個(gè)項(xiàng)目啟動(dòng)之前,開源社區(qū)還沒有一個(gè)可用的持續(xù)集成系統(tǒng)。
隨著作為開源協(xié)作平臺(tái)的Github越來越被人認(rèn)可,Github也非常需要可以持續(xù)對(duì)貢獻(xiàn)代碼進(jìn)行測(cè)試的服務(wù),來保證一個(gè)開源項(xiàng)目始終處于穩(wěn)定健康的狀態(tài)。
Travis CI開始于2011年初,而且很快得到了一些試用客戶。到了2011年夏天,我們每天進(jìn)行700次構(gòu)建。所有這些構(gòu)建都是在一臺(tái)構(gòu)建服務(wù)器上進(jìn)行的。Travis CI跟Github***集成,目前Github還是Travis CI的主要平臺(tái)。
Travis CI在持續(xù)集成領(lǐng)域并沒有驚天動(dòng)地的大動(dòng)作,但它的確重新定義了一些原有的概念,并增加了一些新的想法。其中一個(gè)就是你可以在你的測(cè)試運(yùn)行過程中,接近實(shí)時(shí)的看這個(gè)項(xiàng)目的構(gòu)建日志流。
最重要的一點(diǎn),Travis CI允許你通過源碼里的文件(.travis.yml)來對(duì)構(gòu)建過程進(jìn)行配置,而不是復(fù)雜的用戶界面。
Travis CI一開始的架構(gòu)很簡(jiǎn)單。通過Web組件可以讓項(xiàng)目和它的構(gòu)建過程可見,同時(shí),只要一個(gè)新的commit提交到了項(xiàng)目,Travis CI就可以接收到來自Github的消息,從而觸發(fā)構(gòu)建。
另外一個(gè)叫做hub的組件,是負(fù)責(zé)處理新的提交,將他們轉(zhuǎn)化成一次構(gòu)建,并且處理構(gòu)建任務(wù)運(yùn)行和結(jié)束時(shí)產(chǎn)生的結(jié)果數(shù)據(jù)。
這兩個(gè)組件都是跟PostgreSQL數(shù)據(jù)庫打交道。
第三部分就是用來控制構(gòu)建任務(wù)本身的線程集合,它們可以用來在虛擬機(jī)實(shí)例上執(zhí)行一系列的命令。
本質(zhì)上,hub會(huì)顯得比其他部分稍微復(fù)雜一些。當(dāng)hub處理構(gòu)建日志時(shí),它需要與RabbitMQ進(jìn)行消息傳遞。日志會(huì)以chunks流的形式從控制構(gòu)建任務(wù)的線程中得到。
Hub更新數(shù)據(jù)庫中的日志和構(gòu)建結(jié)果信息,并且hub推送他們到Pusher。通過Pusher,Travis CI可以在構(gòu)建開始或結(jié)束的時(shí)候更新用戶界面。
這樣的架構(gòu)一直維持到了2012年,當(dāng)時(shí)我們每天進(jìn)行7000個(gè)構(gòu)建任務(wù)。我們欣喜的看到Travis CI在開源社區(qū)越來越廣泛的使用,并且開始支持11種語言,包括PHP,Python,Perl,Java 和 Erlang。
隨著越來越多的使用,Travis CI越來越像是一個(gè)開源項(xiàng)目的必備服務(wù)了。但是不幸的是,這個(gè)系統(tǒng)從一開始構(gòu)建的時(shí)候就沒有考慮過監(jiān)控。
過去,總是來自社區(qū)的用戶通知我們系統(tǒng)沒有正常運(yùn)行,構(gòu)建任務(wù)遇到異常,或是任務(wù)信息沒有被處理好。
那可真是令人尷尬。我們的***個(gè)挑戰(zhàn)就是給系統(tǒng)增加監(jiān)控,數(shù)據(jù)指標(biāo)和日志,讓Travis CI從一個(gè)業(yè)務(wù)愛好的項(xiàng)目轉(zhuǎn)變?yōu)橐粋€(gè)重要的商業(yè)平臺(tái)。我們準(zhǔn)備發(fā)布Travis CI的正式生產(chǎn)版本。
被用戶告知系統(tǒng)沒有正常運(yùn)行直到今天仍然是我***的噩夢(mèng),我們不得不努力工作建設(shè)好數(shù)據(jù)監(jiān)控,以使系統(tǒng)能夠在出現(xiàn)問題的一開始就及時(shí)通知。
如果沒有任何數(shù)據(jù)記錄或者良好的日志,我們根本不可能去搞清我們這個(gè)小分布式系統(tǒng)到底發(fā)生了什么。無論是從哪個(gè)方面看,Travis CI都已經(jīng)是一個(gè)分布式系統(tǒng)了。
加入監(jiān)控指標(biāo)和日志是一次循序漸進(jìn)的學(xué)習(xí)過程,但是最終,它們讓我們可以了解這個(gè)系統(tǒng)正在做什么,無論是通過圖表還是日志。
這對(duì)我們而言是一個(gè)巨大的提升??梢娦詫?duì)于運(yùn)行一個(gè)分布式系統(tǒng)是非常重要的。
當(dāng)你寫一個(gè)系統(tǒng)時(shí),考慮好如何監(jiān)控它。
做好監(jiān)控會(huì)有助于你的系統(tǒng)更好的在生產(chǎn)環(huán)境運(yùn)行,而不僅僅是通過測(cè)試。
關(guān)鍵是,更多的監(jiān)控不僅僅是讓你可以對(duì)系統(tǒng)更了解,你也會(huì)發(fā)現(xiàn)那些你以前未曾想到或見到的問題。系統(tǒng)更高的可見性帶來更多的責(zé)任感?,F(xiàn)在我們需要去面對(duì)這樣的事實(shí):我們對(duì)系統(tǒng)的錯(cuò)誤有了更多的了解,所以我們必須更有效的工作來減少這些錯(cuò)誤所帶來的影響。
感謝各位的閱讀,以上就是“Travis CI是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Travis CI是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。