在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

jenkins持續集成原理

lhl545545 ? 來源:電子發燒友網 ? 2018-02-06 11:43 ? 次閱讀

持續集成

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

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

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

個人理解持續集成:為解決程序代碼提交質量低,提交內容導致原有系統的bug,按時或按需自動編譯版本,自動進行自動化測試。

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

[是什么]

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

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

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

[為什么]

一般規模較小的項目,對外部系統的依賴和服務調用很小,對于軟件的集成不是問題。但是隨著軟件復雜度的增加,對集成提出了更多的要求,持續集成的好處就體現出來了。

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

2)及早發現各種沖突和錯誤,減少風險。

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

[怎么做]

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

1.一個自動構建過程,包括自動編譯、分發、部署和測試等

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

3.一個持續集成服務器。

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

代碼倉庫作為構建的素材庫,構建所需的代碼從代碼庫中獲得。

最好有一臺服務器單獨作為持續集成服務器,一方面保證了環境的純凈,一方面不影響開發,而且持續集成服務器一般是隨時準備開始構建的,所以一般也不關機。

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

[原則]

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

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

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

4.不更新構建失敗的代碼

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

[持續集成工具]

講了這么多概念,有沒一種工具把這種實踐實現呢?當然有,常見的持續集成工具如下:

jenkins

travis

gitlab

buddybuild

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

jenkins

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

Jenkins 有哪些功能呢?

1.定時拉取代碼并編譯

2.靜態代碼分析

3.定時打包發布測試版

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

5.出錯提醒

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

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

圖片理解:

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

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

jenkins持續集成原理

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

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

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

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

[宏觀理解]

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

jenkins持續集成原理

詳細介紹:

jenkins持續集成原理
jenkins持續集成原理
jenkins持續集成原理
jenkins持續集成原理

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

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

jenkins持續集成原理

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

系統的工作流程大概分為以下幾步:

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

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

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

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

notes

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • jenkins
    +關注

    關注

    0

    文章

    31

    瀏覽量

    5174
收藏 人收藏

    評論

    相關推薦

    持續改進工具之戰:Smartsheet vs. Minitab Engage

    Smartsheet和Engage: 持續集成路線圖:Smartsheet缺乏成功執行項目所需的預構建持續集成工作流。Engage在每
    的頭像 發表于 01-24 14:40 ?86次閱讀

    微服務容器化部署好處多嗎?

    微服務容器化部署好處有很多,包括環境一致性、資源高效利用、快速部署與啟動、隔離性與安全性、版本控制與回滾以及持續集成持續部署。這些優勢助力應用可靠穩定運行,提升開發運維效率,是現代軟件架構的優質選擇。UU云小編認為微服務容器化部署好處主要體現在以下幾個方面:
    的頭像 發表于 01-17 10:22 ?80次閱讀

    基于 Docker 與 Jenkins 實現自動化部署

    前言 重塑自動化部署新高度,Docker 攜手 Jenkins,在華為云 Flexus X 云服務器的加持下,引領持續集成與部署的新紀元。Flexus X 以其卓越的性能、靈活的資源配置和高效的成本
    的頭像 發表于 01-07 17:25 ?219次閱讀
    基于 Docker 與 <b class='flag-5'>Jenkins</b> 實現自動化部署

    Jenkins 與 SonarQube 集成部署,自動化代碼質量監控

    的性能表現,為 Jenkins 與 SonarQube 的集成部署提供強大支撐。在 Flexus X 的助力下,自動化代碼掃描與質量問題即時反饋成為可能,顯著提升團隊開發效率與軟件質量。立即體驗華為云
    的頭像 發表于 01-07 17:24 ?275次閱讀
    <b class='flag-5'>Jenkins</b> 與 SonarQube <b class='flag-5'>集成</b>部署,自動化代碼質量監控

    基于SOA自動駕駛整車及運營系統架構

    Architecture,SOA)設計思想和理念,設計、打造可持續集成、靈活配置和持續升級的自動駕駛整車乃至整個運營系統,可為客戶提供面向封閉區域運營的完整自動化解決方案。
    的頭像 發表于 01-06 17:00 ?512次閱讀
    基于SOA自動駕駛整車及運營系統架構

    基于SOA自動駕駛整車及運營系統架構

    ,設計、打造可持續集成、靈活配置和持續升級的自動駕駛整車乃至整個運營系統,可為客戶提供面向封閉區域運營的完整自動化解決方案。,車輛電子電氣架構開發模式遇到了巨大的挑戰。
    的頭像 發表于 01-06 16:06 ?27次閱讀
    基于SOA自動駕駛整車及運營系統架構

    云服務器Flexus X實例,Docker集成搭建Jenkins CI/CD平臺

    Jenkins 是一個開源的自動化服務器,用于持續集成(CI)和持續交付(CD)軟件項目。它允許開發人員在軟件開發過程中自動化各種任務,如構建、測試和部署,從而提高開發效率和軟件質量。
    的頭像 發表于 12-29 15:43 ?163次閱讀
    云服務器Flexus X實例,Docker<b class='flag-5'>集成</b>搭建<b class='flag-5'>Jenkins</b> CI/CD平臺

    Flexus X 實例 Docker+Jenkins+gitee 實現 CICD 自動化部署 - 解放你的雙手~

    這一前沿解決方案,為您的 C# Web API 項目注入前所未有的敏捷動力。通過集成 Docker 容器化技術、Jenkins 持續集成/持續部署(CICD)平臺,以及 Gitee 高
    的頭像 發表于 12-26 18:19 ?211次閱讀
    Flexus X 實例 Docker+<b class='flag-5'>Jenkins</b>+gitee 實現 CICD 自動化部署 - 解放你的雙手~

    devops使用最廣泛的集成工具盤點

    devops使用最廣泛的集成工具包括GitLab(全棧DevOps平臺)、Jenkins(CI/CD自動化服務器)、Docker(容器化技術)、Kubernetes(容器編排平臺)、Ansible
    的頭像 發表于 11-26 13:48 ?246次閱讀

    AUTOSAR架構下,持續集成CI的最佳實踐

    隨著汽車電子技術的快速發展,汽車軟件的復雜性與日俱增,如何確保軟件開發的高效性與穩定性成為了一個關鍵問題。為了解決這個問題,許多汽車企業和供應商逐漸引入了AUTOSAR架構,并在此基礎上構建了持續集成
    的頭像 發表于 10-24 08:06 ?565次閱讀
    AUTOSAR架構下,<b class='flag-5'>持續集成</b>CI的最佳實踐

    Jenkins常見問題分析和解決方案

    替換原因:進入 Manage Jenkins -》 Manage Plugin,發現Updates tab頁沒數據,報There were errors checking the update
    的頭像 發表于 10-22 11:07 ?426次閱讀
    <b class='flag-5'>Jenkins</b>常見問題分析和解決方案

    Perforce靜態分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改進和安全增強

    實現持續合規性現代軟件開發實踐要求開發團隊具備適應性,在確保代碼質量和可靠性的同時,優先考慮靈活性和協作性。在軟件開發流程中實施持續集成(CI)和持續交付(CD)流
    的頭像 發表于 10-08 16:22 ?340次閱讀
    Perforce靜態分析工具2024.2新增功能:Helix QAC全新CI/CD<b class='flag-5'>集成</b>支持、Klocwork分析引擎改進和安全增強

    使用MATLAB、Simulink和Polyspace加速軟件定義汽車開發

    開發軟件定義汽車 (SDV) 時,開發團隊必須具備新的能力,例如進行連續的軟件發布,減少軟件更改的交付周期以及盡可能減少部署失敗。同時,平臺團隊需要為車載計算機和區域控制器創建新軟件開發環境,設置持續集成/持續交付 (CI/CD) 系統,并協助系統和軟件開發人員之間的協作
    的頭像 發表于 09-05 09:57 ?574次閱讀
    使用MATLAB、Simulink和Polyspace加速軟件定義汽車開發

    NFC可以進行持續信號的檢測傳輸嗎?

    NFC可以進行持續信號的檢測傳輸嗎?比如心電、溫度壓力等持續時間內
    發表于 05-22 07:09

    自動化構建環境在FPGA設計中的應用

    為了加快實現 FPGA 構建環境的自動化(如用于持續集成 (CI)),并確保在開發與生命周期后期階段完整重現設計結果,Missing Link Electronics 團隊已整合出一套腳本。
    發表于 02-20 11:05 ?458次閱讀
    自動化構建環境在FPGA設計中的應用
    主站蜘蛛池模板: 美女免费视频色在线观看 | 天堂免费在线视频 | 久色国产 | 男人在线视频 | 成人欧美精品大91在线 | avbobo在线 | 亚洲福利二区 | 亚洲播播| 天天干天天干天天操 | 成人啪啪免费视频 | 欧美香蕉视频 | 激情综合色综合久久综合 | 亚洲大香伊人蕉在人依线 | 成人欧美一区二区三区黑人免费 | 色噜噜狠狠狠色综合久 | 色综合成人 | 免费看国产一级片 | 五月婷婷久| 五月婷婷影视 | 免费你懂的 | 欧美午夜在线播放 | 黄色欧美 | 欧美freesex| 国产一区二区三区在线观看影院 | 午夜免费啪视频观看网站 | 午夜性| 中国特级毛片 | 色婷婷狠狠干 | 亚洲区视频在线观看 | 国产拍拍 | 亚洲伦理一区 | 亚洲国产精 | 亚洲jizzjizz| 欧美污视频网站 | 国产性夜夜春夜夜爽 | 欧美人成网站免费大全 | 丁香婷婷在线观看 | 三级在线观看视频网站 | 911精品国产91久久久久 | 天天射日日射 | 在线精品91青草国产在线观看 |