91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

jenkins持續(xù)集成原理

lhl545545 ? 來源:電子發(fā)燒友網(wǎng) ? 2018-02-06 11:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

持續(xù)集成

開發(fā)中,我們經(jīng)常遇到一些奇怪問題,比如本地可以編譯成功的代碼但是同事們更新代碼后編譯出錯,或者在項目有多個Target的時候,資源文件只添加到了當(dāng)前的Target,另外一個Target這個時候是不能正常編譯的,再比如寫的工具類,被同事改了,或者自己有改動,很多地方用到了,怎么保證這個類的行為沒有發(fā)生變化而影響到項目中的其它模塊呢?諸如此類。

那么這些問題原因在哪,可否避免呢?當(dāng)然是可以避免的,如果代碼有新的改動,提交到版本庫中的時候,有一個人幫我們檢查必要事項,然后做做測試不就好了,這個當(dāng)然是可以的,前提是老板同意專門招一個這樣的人。

引起各種奇怪問題的原因有很多,比如開發(fā)環(huán)境比較復(fù)雜不干凈,IDE的bug,提交前有一些必要的檢查需要做,但是開發(fā)時因為各種原因沒做,這些機械重復(fù)的事情我們可以找一個工具來幫我們完成,而且這個工具跑在一個專門的服務(wù)器上,該服務(wù)器環(huán)境相對干凈,可以運行一些自動化操作,而自動編譯,代碼檢查,測試等環(huán)節(jié),那么這種東西,就是接下來講的[持續(xù)集成]。

個人理解持續(xù)集成:為解決程序代碼提交質(zhì)量低,提交內(nèi)容導(dǎo)致原有系統(tǒng)的bug,按時或按需自動編譯版本,自動進行自動化測試。

百度的定義:持續(xù)集成是一種軟件開發(fā)實踐,即團隊開發(fā)成員經(jīng)常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡快發(fā)現(xiàn)集成錯誤。許多團隊發(fā)現(xiàn)這個過程可以大大減少集成的問題,讓團隊能夠更快的開發(fā)內(nèi)聚的軟件。

[是什么]

持續(xù)集成是一種軟件開發(fā)實踐,即團隊開發(fā)成員經(jīng)常集成他們的工作,通過每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成,每次的集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡早發(fā)現(xiàn)集成錯誤。簡單來說,就是持續(xù)的定時的在多個團隊成員的工作中進行集成,并且給予反饋。

持續(xù)集成需要開發(fā)人員一天多次的將代碼集成到主干,并進行自動化編譯、測試等操作,由于這種頻繁集成,以及集成后及時開始的編譯和測試,可以有效避免我們在提交代碼時沒有進行必要檢查而導(dǎo)致的錯誤,以及一些超出預(yù)期效果的更改,從而保證代碼的質(zhì)量。

由于這種及時性,如果在一次提交后項目集成失敗,可以快速的在這次提交中查找問題所在,縮小了找問題的范圍,從而減少了一些debug時間。同時如果按照這種實踐,那么我們的主干代碼時刻都是正確的,這樣我們可以更頻繁的交付。

[為什么]

一般規(guī)模較小的項目,對外部系統(tǒng)的依賴和服務(wù)調(diào)用很小,對于軟件的集成不是問題。但是隨著軟件復(fù)雜度的增加,對集成提出了更多的要求,持續(xù)集成的好處就體現(xiàn)出來了。

1)對重復(fù)的編譯發(fā)布等操作進行抽象,減少重復(fù)過程。

2)及早發(fā)現(xiàn)各種沖突和錯誤,減少風(fēng)險。

3)任何時間、任何地點生成可部署的軟件

[怎么做]

基本要求:要將這種實踐付諸實際,需要一些必要的條件,如下

1.一個自動構(gòu)建過程,包括自動編譯、分發(fā)、部署和測試等

2.一個代碼存儲庫,即需要版本控制軟件來保障代碼的可維護性,同時作為構(gòu)建過程的素材庫。

3.一個持續(xù)集成服務(wù)器。

自動化構(gòu)建成過程,可幫助我們節(jié)省大量時間,完成這個過程的自動化后,在以后的開發(fā)過程中,我們需要做的,就是只是提交代碼到版本庫中,構(gòu)建自動完成,基本不再需要人工干預(yù)。

代碼倉庫作為構(gòu)建的素材庫,構(gòu)建所需的代碼從代碼庫中獲得。

最好有一臺服務(wù)器單獨作為持續(xù)集成服務(wù)器,一方面保證了環(huán)境的純凈,一方面不影響開發(fā),而且持續(xù)集成服務(wù)器一般是隨時準(zhǔn)備開始構(gòu)建的,所以一般也不關(guān)機。

1[首先要有統(tǒng)一的代碼庫,服務(wù)器不斷從版本控制服務(wù)器上檢查代碼狀態(tài),看代碼是否有更新。如果發(fā)現(xiàn)有代碼更新,那么就從版本控制服務(wù)器下載最新的代碼。等代碼完全更新以后,調(diào)用自動化編譯腳本,進行代碼編譯。然后運行所有的自動化測試,并且進行代碼分析。如果其中任何一個步驟失敗,就表示build失敗,持續(xù)集成服務(wù)器會給予響應(yīng)的反饋。每次代碼提交之后,都會在持續(xù)集成服務(wù)器上觸發(fā)一個定時構(gòu)建,然后進行編譯、部署。]

[原則]

1.開發(fā)人員必須及時向版本控制庫中提交代碼,也必須經(jīng)常性地從版本控制庫中更新代碼到本地;

2.需要有專門的集成服務(wù)器來執(zhí)行集成構(gòu)建。根據(jù)項目的具體實際,集成構(gòu)建可以被軟件的修改來直接觸發(fā),也可以定時啟動,如每半個小時構(gòu)建一次;

3.必須保證構(gòu)建的成功。如果構(gòu)建失敗,修復(fù)構(gòu)建過程中的錯誤是優(yōu)先級最高的工作。一旦修復(fù),需要手動啟動一次構(gòu)建。

4.不更新構(gòu)建失敗的代碼

開發(fā)人員及時的提交代碼進行構(gòu)建是符合上述實踐的,及時拉取代碼可以防止工作中的分支偏離主干分支太多。定時觸發(fā)構(gòu)建或者通過檢測代碼的修改情況在觸發(fā)構(gòu)建都是可以的,主要是根及時的構(gòu)建新的代碼。如果構(gòu)建失敗,則必要及時處理導(dǎo)致失敗的問題,修復(fù)后重新構(gòu)建。當(dāng)然構(gòu)建失敗的代碼就不要拉到本地了,會污染一個本來是可以運行的工作區(qū)。

[持續(xù)集成工具]

講了這么多概念,有沒一種工具把這種實踐實現(xiàn)呢?當(dāng)然有,常見的持續(xù)集成工具如下:

jenkins

travis

gitlab

buddybuild

僅列舉了一些典型的,Jenkins 是傳統(tǒng)型的工具,前身是 Hudson,04 年到現(xiàn)在已經(jīng)有十多年的歷史,后幾個是最近幾年出現(xiàn)的新一批,多少都和容器技術(shù)有點關(guān)系,這里我們主要介紹 Jenkins,因為這個工具比較常用,各種開發(fā)實踐都可以通過大量的插件來組合實現(xiàn),可定制性好很多。

jenkins

1jenkins是一個開源項目,提供了一種易于使用的持續(xù)集成系統(tǒng),使開發(fā)者從繁雜的集成中解脫出來,專注于更為重要的業(yè)務(wù)邏輯實現(xiàn)上。同時 Jenkins 能實施監(jiān)控集成中存在的錯誤,提供詳細(xì)的日志文件和提醒功能,還能用圖表的形式形象地展示項目構(gòu)建的趨勢和穩(wěn)定性?!?維基百科

Jenkins 有哪些功能呢?

1.定時拉取代碼并編譯

2.靜態(tài)代碼分析

3.定時打包發(fā)布測試版

4.自定義額外的操作,如跑單元測試等

5.出錯提醒

基本上都是持續(xù)集成實踐中的要求和周邊的一些實現(xiàn)措施,如提醒功能等,出錯后及時提醒開發(fā)者修復(fù),Jenkins 中通過配置 SMTP 配置信息(這個一般的郵件服務(wù)提供商都有提供),郵件模板等,創(chuàng)建事件觸發(fā)器,在事件(如編譯失?。┌l(fā)生時,及時發(fā)送郵件通知開發(fā)者,挺方便的。

Jenkins 有很多種觸發(fā)構(gòu)建的方式,如 webhook,定時更新代碼等,同時可以在觸發(fā)構(gòu)建后執(zhí)行自定義的構(gòu)建操作,通過編輯自定義的構(gòu)建腳本,幾乎可以進行任何構(gòu)建操作。

圖片理解:

1)齒輪:如果將java/maven/ant/git/tomcat/jenkins等軟件比喻為齒輪,如下圖

2)兩個軟件在一起可以驅(qū)動另外一個軟件,如下圖

jenkins持續(xù)集成原理

3)如果把這些軟件要集成在一起工作,那么這個軟件就可以存在其他軟件的中間來驅(qū)動各個軟件工作,如下圖:

4)jenkins就是類似中間那個齒輪,來驅(qū)動其他軟件的集成一起工作,如下圖

jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使得持續(xù)集成編程可能。它的前身是hudson,是基于java開發(fā)的一種持續(xù)集成工具,它可以根據(jù)配置進行持續(xù)定期編譯,運行相應(yīng)的代碼,將運行結(jié)果發(fā)送至郵件或者展示成報告等。

jenkins作為持續(xù)集成的標(biāo)志性工具,自然是有了持續(xù)集成的眾多優(yōu)點。jenkins可以做一些自動化的build,只要我們把jenkins搭建成功,可以設(shè)置幾分鐘build一次,在定時自動build,驗證單元測試,如果發(fā)生錯誤則把錯誤報告以email形式發(fā)送給項目模塊負(fù)責(zé)人。

[宏觀理解]

先來張圖,大致理解下宏觀:

jenkins持續(xù)集成原理

詳細(xì)介紹:

jenkins持續(xù)集成原理
jenkins持續(xù)集成原理
jenkins持續(xù)集成原理
jenkins持續(xù)集成原理

至于關(guān)于郵件的配置,也是為了方便我們的開發(fā)和管理,jenkins很強大。

講到這里,還是“啊呀呀,完蛋,還是有點不懂“的話,不如直接甩圖(從網(wǎng)上copy下來的):

jenkins持續(xù)集成原理

這里是選擇Gitlab作為git server。Gitlab的功能和Github差不多,但是是開源的,可以用來搭建私有g(shù)it server,也提供非常強大的web GUI,比如開發(fā)者互相review源代碼的時候就會很方便。

系統(tǒng)的工作流程大概分為以下幾步:

1> 開發(fā)者將新版本push到git server (Gitlab)。

2> Gitlab隨后觸發(fā)jenkins master結(jié)點進行一次build。(通過web hook或者定時檢測)

3> jenkins master結(jié)點將這個build任務(wù)分配給若干個注冊的slave結(jié)點中的一個,這個slave結(jié)點根據(jù)一個事先設(shè)置好的腳本進行build。這個腳本可以做的事情很多,比如編譯,測試,生成測試報告等等。這些原本需要手動完成的任務(wù)都可以交給jenkins來做。

4> 我們在build中要進行編譯,這里使用了分布式編譯器distcc來加快編譯速度。

notes

jenkins的工作原理是先將源代碼從gitlab中拷貝一份到本地,然后根據(jù)設(shè)置的腳本進行build。我們可以看出,整個系統(tǒng)的關(guān)鍵就是那個build腳本,用來告訴jenkins在一次集成中需要執(zhí)行的任務(wù)。

不過我之后是用的Github作為git server。但其實差不多,先講到這里,重點難點還是在之后jenkins的安裝配置使用上。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • jenkins
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    5487
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Imagination GPU?正式接入?Mesa CI

    我們已在開源驅(qū)動的自動化設(shè)備端測試邁出重要一步:基于德州儀器(TI)AM68架構(gòu)、搭載IMGBXS-4-64GPU的設(shè)備集群現(xiàn)已集成至Mesa上游持續(xù)集成系統(tǒng)。MesaCI是一個持續(xù)集成框架,作為一
    的頭像 發(fā)表于 03-02 09:17 ?401次閱讀
    Imagination GPU?正式接入?Mesa CI

    新思科技Silver解鎖FreeRTOS虛擬ECU潛能

    實際硬件的開發(fā)初期也能啟動開發(fā)和測試工作。更重要的是,它能支撐軟件定義汽車(SDV)流程(如持續(xù)集成持續(xù)部署),在整個軟件生命周期中均可利用 vECU,實現(xiàn)功能開發(fā)和漏洞修復(fù)的快速迭代。
    的頭像 發(fā)表于 01-22 12:46 ?613次閱讀
    新思科技Silver解鎖FreeRTOS虛擬ECU潛能

    中航光電持續(xù)深耕流體傳輸及液冷散熱領(lǐng)域

    在各行業(yè)技術(shù)升級的浪潮下,設(shè)備集成度與運行負(fù)荷持續(xù)提升,數(shù)據(jù)中心、工業(yè)智造、光伏儲能等場景的散熱需求均朝著高效、可靠、綠色的方向升級。依托互連技術(shù)核心優(yōu)勢,中航光電深耕流體傳輸及液冷散熱領(lǐng)域,以高可靠傳輸架構(gòu)與高效散熱設(shè)計,打造適配行業(yè)多元散熱需求的互連解決方案,為各領(lǐng)域
    的頭像 發(fā)表于 01-09 15:52 ?922次閱讀

    MDD品牌三極管2SC2383數(shù)據(jù)手冊

    高壓:VCEO=160V大持續(xù)集電極電流能力
    發(fā)表于 12-30 17:14 ?0次下載

    功率集成電路應(yīng)用中的通用熱學(xué)概念

    單芯片功率集成電路的數(shù)據(jù)手冊通常會規(guī)定兩個電流限值:最大持續(xù)電流限值和峰值瞬態(tài)電流限值。其中,峰值瞬態(tài)電流受集成功率場效應(yīng)晶體管(FET)的限制,而持續(xù)電流限值則受熱性能影響。數(shù)據(jù)手冊
    的頭像 發(fā)表于 10-11 08:35 ?5458次閱讀
    功率<b class='flag-5'>集成</b>電路應(yīng)用中的通用熱學(xué)概念

    AI座艙“讀心術(shù)”:場景感知與主動服務(wù)的交互革命

    。該平臺具備高度靈活的模塊化架構(gòu),支持用戶快速定制測試用例,實現(xiàn)自動化回歸測試和持續(xù)集成,顯著提升測試效率和覆蓋率。
    的頭像 發(fā)表于 09-29 09:52 ?1818次閱讀
    AI座艙“讀心術(shù)”:場景感知與主動服務(wù)的交互革命

    CI/CD實踐中的運維優(yōu)化技巧

    在數(shù)字化轉(zhuǎn)型的浪潮中,CI/CD已經(jīng)成為現(xiàn)代軟件開發(fā)的基石。然而,真正能夠發(fā)揮CI/CD威力的,往往在于那些不為人知的運維優(yōu)化細(xì)節(jié)。本文將深入剖析CI/CD實踐中的關(guān)鍵優(yōu)化技巧,幫助您構(gòu)建更高效、更穩(wěn)定的持續(xù)集成與部署體系。
    的頭像 發(fā)表于 09-18 15:05 ?1217次閱讀

    Jenkins Pipeline的高級應(yīng)用技巧

    為一名在運維一線摸爬滾打5年的工程師,我見過太多因為CI/CD流水線配置不當(dāng)而導(dǎo)致的生產(chǎn)事故。今天分享一些Jenkins Pipeline的高級應(yīng)用技巧,這些都是我在實際項目中踩過坑后總結(jié)的經(jīng)驗,希望能幫助大家少走彎路。
    的頭像 發(fā)表于 08-27 14:32 ?670次閱讀

    集成線性充電,按鍵控制及直流電機驅(qū)動三合一芯片適用于攜便式小家電應(yīng)用

    的鋰電池充電方式。PC2107支持最高工作電壓為15.0V。電機驅(qū)動部分可以持續(xù)電流2.0A, 峰值電流3.0A. 同時,集成了輸入過壓保護,過溫保護,欠壓保護等功能。PC2107集成了單鍵觸發(fā)
    發(fā)表于 08-02 10:31

    一文掌握Jenkins自動化部署

    Jenkins自動化部署是現(xiàn)代軟件開發(fā)中不可或缺的一部分,它不僅簡化了代碼的發(fā)布過程,還為整個團隊帶來了無與倫比的效率和協(xié)作力。想象一下,開發(fā)者們可以專注于編寫高質(zhì)量的代碼,而不是為繁瑣的手動部署所
    的頭像 發(fā)表于 04-23 10:50 ?2858次閱讀
    一文掌握<b class='flag-5'>Jenkins</b>自動化部署

    代碼靜態(tài)測試工具Perforce QAC 2025.1新特性

    Perforce QAC 2025.1實現(xiàn)了對新發(fā)布的MISRA C:2025?標(biāo)準(zhǔn)的100%覆蓋,并提供了對應(yīng)的新合規(guī)模塊。該版本還擴展了對CERT C Level 1建議的覆蓋范圍,改進了與持續(xù)集成
    的頭像 發(fā)表于 04-21 15:14 ?1078次閱讀
    代碼靜態(tài)測試工具Perforce QAC 2025.1新特性

    CICTCD在汽車軟件開發(fā)中的革命性作用#持續(xù)集成與測試 #CICD持續(xù)集成與交付

    軟件開發(fā)
    北匯信息POLELINK
    發(fā)布于 :2025年04月17日 15:36:09

    燧原科技正式納入飛槳例行版本發(fā)布體系

    燧原科技與飛槳經(jīng)過長時間的適配合作和持續(xù)集成(CI)建設(shè),對飛槳合?的每?行代碼都在燧原硬件上進?了驗證。如今,燧原正式納入飛槳例行版本發(fā)布體系。未來,燧原將基于這?合作模式,共同?持飛槳重大版本發(fā)布,推動AI技術(shù)創(chuàng)新和開源?態(tài)發(fā)展邁上新臺階。
    的頭像 發(fā)表于 04-11 11:31 ?1082次閱讀
    燧原科技正式納入飛槳例行版本發(fā)布體系

    零知開源平臺重磅升級!嵌入式開發(fā)進入“渦輪增壓”時代

    % 【開發(fā)者這樣受益】 日均百次編譯節(jié)省85%等待時間 硬件在環(huán)調(diào)試效率提升3倍 持續(xù)集成流水線構(gòu)建時間縮短75% 多設(shè)備并行開發(fā)游刃有余 【立即獲取】 最新版軟件下載: 零知實驗室https
    發(fā)表于 03-11 11:22