成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于 jenkins 和 docker 的個推持續(xù)集成平臺

binaryTree / 2620人閱讀

摘要:基于的特性,以及持續(xù)集成的需求,個推采用為持續(xù)集成搭建了一整套測試系統(tǒng)。個推持續(xù)集成流程以一個假設名為模塊為例,以開發(fā)人員的視角闡述了持續(xù)集成的邏輯。

軟件開發(fā)過程中,開發(fā)成員經(jīng)常需要把自己工作集成到項目中,通常每個成員每天至少集成一次。如果項目較小,對外部的依賴較小,那么軟件集成可能不會是什么問題。但是目前很多軟件項目特別是互聯(lián)網(wǎng)項目面臨著需求不明確,系統(tǒng)架構(gòu)復雜,任務分配混亂等一系列問題,從而給持續(xù)集成帶來許多麻煩。也給整個項目帶來不必要的風險。因此一個有效的持續(xù)集成系統(tǒng)越來越重要。

個推平臺是一個極其復雜的分布式系統(tǒng),整個系統(tǒng)包含了 RPC 調(diào)用,高速緩存,集群同步等各種復雜的場景。整個團隊只有二十來個人卻維護了近百個模塊的開發(fā)和測試工作,如果沒有一套有效的機制,很難想象如何完成這些任務。持續(xù)集成在其中扮演了非常重要的角色,借助于 Git、Docker、Jenkins 以及 Nexus 等工具,我們搭建了自己的持續(xù)集成環(huán)境,并一步一步的摸索出了自己的最佳實踐,這篇文章將會和大家一起分享我們是如何利用這些技術(shù)提高團隊的生產(chǎn)力的。

個推持續(xù)集成系統(tǒng)的組成 使用git作為版本控制庫

相比于同類項目版本系統(tǒng),git有一項非常顯著的優(yōu)勢,就是版本分支(branch)的合并(merge)十分方便。

使用docker搭建測試環(huán)境

作為一種新型的虛擬化方式,相對于傳統(tǒng)的虛擬化方式有著眾多的優(yōu)勢。例如,docker虛擬容器的啟動可以在秒級實現(xiàn),并且對系統(tǒng)資源的利用率很高。另外,docker的管理,遷移和擴展也更輕松有效。

使用jenkins作為持續(xù)集成服務器

Jenkins為開發(fā)人員提供了非常有效的持續(xù)集管理。其強大的插件系統(tǒng)和明確的構(gòu)建邏輯,使得構(gòu)建流程的創(chuàng)建非常簡便。

Docker在持續(xù)集成系統(tǒng)中的作用

測試作為軟件項目重要的一環(huán),一般都需要開發(fā)團隊搭建一套獨立的測試系統(tǒng)。但作為持續(xù)集成的一個環(huán)節(jié),此測試系統(tǒng)又異于一般的測試系統(tǒng)。主要原因為,持續(xù)集成測試系統(tǒng)主要用來做回歸測試,而且需要支持快速大量的代碼升級?;赿ocker的特性,以及持續(xù)集成的需求,個推采用docker為持續(xù)集成搭建了一整套測試系統(tǒng)。

鏡像準備:docker 的運行基于鏡像文件,而每個項目所需的鏡像文件又不同。因此需要獨立分析每個項目的需求以及未來擴展需要,創(chuàng)建出不同版本的鏡像文件。目前,個推主要有4大類鏡像,分別支持前端,后端,工具類,以及其他項目。以前端為例,個推采用了前后端分離的開發(fā)模式,因此此鏡像主要用來支持web 前端的服務運行。

素材準備:為了能在docker里運行所需要的服務,需要docker實例中安裝相應的包。 一般有兩種方法,一種為將相應的素材與鏡像文件相綁定,另一種以docker 卷的形式動態(tài)映射到docker實例。 兩種方式有其優(yōu)劣,第一種方式使得每次docker 容器的啟動非常迅捷,而第二種方式則更為靈活。這個需要根據(jù)不同的需求選擇合適的方式。

下圖為docker 在整個持續(xù)集成系統(tǒng)中的作用。Jenkins 作為主服務器將代碼和docker 統(tǒng)一的管理起來。

個推持續(xù)集成流程

以一個假設名為user模塊為例,以開發(fā)人員的視角闡述了持續(xù)集成的邏輯。從下圖中可以看出,我們系統(tǒng)的git分支包括dev,master兩個分支:

dev:開發(fā)分支,開發(fā)人員維護,開發(fā)人員將最新代碼提交到這個分支,Jekins監(jiān)視這個分支,任何代碼改變都會觸發(fā)自動化測試

master:發(fā)布分支,這個分支上的版本是自動化測試通過后的版本,且自動化打包監(jiān)控這個分支

圖中的每個長方形代表一個Jenkins Job。下面將對每個Job進行說明:

user: 監(jiān)控user代碼庫的dev分支,當每次有新的代碼提交時,就會自動觸發(fā)構(gòu)建任務。編譯代碼,同時生成code style,測試覆蓋率等關(guān)于代碼質(zhì)量的報表。成功后將觸發(fā)user-docker任務。

user-docker: 打包user工程,重啟user的docker實例以便于使用全新的user包。成功后將觸發(fā)testcase任務

testcase: 驗收測試,檢測改變是否滿足業(yè)務需求所定義的驗收條件。成功后將觸發(fā)marge任務

merge:將user的dev分支merge到master分支

user-pkg: 監(jiān)控user代碼庫的master分支,當有代碼改變時,執(zhí)行mvn package打包操作

經(jīng)過上面的幾個步驟,從代碼提交到打包的整個過程就自動化起來了。

總結(jié)

目前越來越多的公司開始重視持續(xù)集成系統(tǒng),但是缺乏定制化的系統(tǒng)真的能滿足復雜的需求嗎?當模塊之間的聯(lián)系越來越復雜,集成的頻率越來越大,運行環(huán)境的不斷升級 等等,缺乏定制的持續(xù)集成系統(tǒng)是否能達到預期,個推在docker 上找到了問題的答案。 雖然仍然有許多挑戰(zhàn),但隨著技術(shù)的升級和完善,我們終會越做越好。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26463.html

相關(guān)文章

  • Docker在開發(fā)、測試中的應用

    摘要:對測試的影響讓單元測試運行的更順暢單元測試驅(qū)動開發(fā)是一個很好的應用程序開發(fā)方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務,而這些服務的標準化配置往往是一個難點,如數(shù)據(jù)庫的搭建防火墻的配置等。 傳統(tǒng)的軟件開發(fā)、測試、運維需要三個團隊在三個不同的環(huán)境中進行,而三個環(huán)境的不同引發(fā)了很多的問題。如:工作內(nèi)容的重復;開發(fā)環(huán)境中可運行的程序在測試和運維環(huán)...

    mating 評論0 收藏0
  • 應用統(tǒng)計平臺架構(gòu)設計:智能預測APP統(tǒng)計數(shù)據(jù)

    摘要:前言近期,智能大數(shù)據(jù)服務商個推推出了應用統(tǒng)計產(chǎn)品個數(shù),今天我們就和大家來談一談個數(shù)實時統(tǒng)計與數(shù)據(jù)智能平臺整合架構(gòu)設計。個推最廣為人知的能力就是推送服務,而將應用內(nèi)的統(tǒng)計數(shù)據(jù)與推送系統(tǒng)有效整合,能夠輔助更加精細化的運營。 前言:近期,智能大數(shù)據(jù)服務商個推推出了應用統(tǒng)計產(chǎn)品個數(shù),今天我們就和大家來談一談個數(shù)實時統(tǒng)計與AI數(shù)據(jù)智能平臺整合架構(gòu)設計。 很多人可能好奇,擁有數(shù)百億SDK的個推,專...

    CoderStudy 評論0 收藏0
  • Docker容器系列教程(三):jenkins環(huán)境搭建與插件安裝

    摘要:本文將使用這些命令搭建一個持續(xù)集環(huán)境,解決不能聯(lián)網(wǎng)的問題來安裝各種常用插件??偨Y(jié)通過本章學習,你已經(jīng)知道了基于如何在環(huán)境下搭建環(huán)境,并創(chuàng)建一個項目。以為基礎框架,為數(shù)據(jù)訪問層,為權(quán)限授權(quán)層,對常用數(shù)據(jù)進行緩存,基于構(gòu)建的作為前端框架。 回顧:上一文對Docker常用的命令以羅列的方式做了一個詳盡的介紹。本文將使用這些命令搭建一個jenkins持續(xù)集環(huán)境,解決jenkins不能聯(lián)網(wǎng)的問題...

    vvpvvp 評論0 收藏0
  • 構(gòu)建與定制:唯品會 PaaS 基于 Kubernetes 的實踐

    摘要:基于年底或年初沒有推廣的現(xiàn)狀,唯品會部門目前已經(jīng)做了兩年的時間。唯品會現(xiàn)狀唯品會目前線上有一千多個域,每個域之間相互的依賴比較復雜,每次的部署發(fā)布困難。這是唯品會的架構(gòu),主要包含持續(xù)集成和持續(xù)部署。 數(shù)人云上海&深圳兩地容器之Mesos/K8S/Swarm三國演義的嘉賓精彩實錄第三更來啦。唯品會是數(shù)人云Meetup的老朋友,去年曾做過RPC服務框架和Mesos容器化的分享。本次分享中,...

    JackJiang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<