亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

binaryTree / 2700人閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

總結(jié)

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    JackJiang 評論0 收藏0

發(fā)表評論

0條評論

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