日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
使用GitLabCI實(shí)現(xiàn)多模塊項(xiàng)目CI/CD

 本文簡(jiǎn)要介紹了Monorepo在開(kāi)發(fā)多服務(wù)應(yīng)用程序方面的優(yōu)勢(shì)。以及如何使用GitLab CI/CD和Docker輕松構(gòu)建,測(cè)試和部署此類(lèi)應(yīng)用程序。

公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出城區(qū)免費(fèi)做網(wǎng)站回饋大家。

基于現(xiàn)代Web的應(yīng)用程序通常都包含多種服務(wù)。例如,后端API和前端客戶(hù)端。在規(guī)模擴(kuò)大成為問(wèn)題的大型項(xiàng)目中,服務(wù)也可以拆分為多個(gè)微服務(wù)。如何在這樣的項(xiàng)目中組織源代碼?一種解決方案是monorepo,即項(xiàng)目中所有源代碼在同一個(gè)存儲(chǔ)庫(kù)中管理。還有一種是每個(gè)微服務(wù)分別創(chuàng)建一個(gè)存儲(chǔ)庫(kù)管理。monorepo方法允許輕松訪(fǎng)問(wèn)整個(gè)代碼庫(kù),這帶來(lái)了許多優(yōu)勢(shì),例如易于代碼重用、簡(jiǎn)化了依賴(lài)性管理。但每服務(wù)語(yǔ)義版本控制和部署過(guò)程將會(huì)更加復(fù)雜。

我將通過(guò)一個(gè)示例項(xiàng)目來(lái)解釋monorepo的概念及其部署。該項(xiàng)目是一個(gè)僅由兩項(xiàng)服務(wù)組成的Web應(yīng)用程序:后端和前端。例如,后端可以是運(yùn)行在服務(wù)器上并提供REST或GraphQL API的Node.js應(yīng)用程序。前端可以是用JavaScript框架(例如React或Vue.js)編寫(xiě)的單頁(yè)應(yīng)用程序,該應(yīng)用程序由一個(gè)簡(jiǎn)單的Web服務(wù)器提供給客戶(hù)端。

所有源代碼都在一個(gè)monorepo中進(jìn)行管理。我們的簡(jiǎn)單項(xiàng)目的文件結(jié)構(gòu)如下:

 
 
 
 
  1. monorepo/ 
  2.     backend/ 
  3.         src/ 
  4.         Dockerfile 
  5.     frontend/ 
  6.         src/ 
  7.         Dockerfile 
  8.     .git/ 
  9.     .gitignore 
  10.     .gitlab-ci.yaml 
  11.     docker-compose.yaml 

在本地開(kāi)發(fā)過(guò)程中以及服務(wù)器上的生產(chǎn)版本中,我們使用Docker容器。因此,每個(gè)服務(wù)都有一個(gè)Dockerfile描述其Docker鏡像。該文件docker-compose.yaml用于在本地開(kāi)發(fā)環(huán)境中配置和啟動(dòng)容器??梢栽诜?wù)器上使用類(lèi)似的文件來(lái)運(yùn)行應(yīng)用程序,或者您也可以使用Docker編排工具,例如Kubernetes。

CI/CD管道

我們的目標(biāo)是每次發(fā)布新版本(即“代碼提交到GitLab”)時(shí)自動(dòng)將應(yīng)用程序構(gòu)建,測(cè)試和部署到服務(wù)器。這包括構(gòu)建和測(cè)試服務(wù),將每個(gè)服務(wù)捆綁在Docker映像中,并將這些映像存儲(chǔ)在(私有)GitLab Docker Registry中。最后,服務(wù)器會(huì)自動(dòng)收到有關(guān)新版本的通知,并會(huì)觸發(fā)從注冊(cè)表中提取新映像。所有這些都可以通過(guò)GitLab CI / CD來(lái)實(shí)現(xiàn)。這是一個(gè)非常強(qiáng)大的工具?;旧?,GitLab CI / CD管道包括幾個(gè)階段如build,test和deploy。該管道配置有一個(gè)名為.gitlab-ci.yaml的文件,該文件存儲(chǔ)在我們存儲(chǔ)庫(kù)的根目錄中。如果是monorepo,我們必須確保觸發(fā)了GitLab CI / CD管道的正確階段。而且,我們通常只希望構(gòu)建,測(cè)試和部署應(yīng)用程序中已更改的那些服務(wù),而不是將所有服務(wù)都合并在一起,因?yàn)檫@可能會(huì)非常耗時(shí)。

在.gitlab-ci.yaml文件中我們?yōu)槊總€(gè)服務(wù)和每個(gè)階段定義job。為了確保僅在更改服務(wù)源代碼后才執(zhí)行該服務(wù)的作業(yè),我們可以將only/changes子句與文件夾路徑的正則表達(dá)式結(jié)合使用。例如,后端服務(wù)的構(gòu)建作業(yè)可以定義如下:

 
 
 
 
  1. backend_build: 
  2.   stage: build 
  3.   only: 
  4.     changes: 
  5.       - "backend/**/*"   
  6.   ... 

script在job部分中只需四行代碼即可構(gòu)建后端服務(wù)的Docker鏡像并將其推送到GitLab Docker Registry 。

 
 
 
 
  1. backend_build: 
  2.   ... 
  3.   script: 
  4.     - docker login -u $DOCKER_USER -p $ACCESS_TOKEN $CI_REGISTRY 
  5.     - cd backend 
  6.     - docker build -f Dockerfile --tag latest . 
  7.     - docker push latest 
  8.   ... 

在第一行中,我們使用用戶(hù)名和訪(fǎng)問(wèn)令牌登錄到GitLab Docker Registry,該用戶(hù)名和訪(fǎng)問(wèn)令牌先前已在變量名稱(chēng)$DOCKER_USER和中定義$ACCESS_TOKEN(在GitLab項(xiàng)目的設(shè)置中)。然后,我們轉(zhuǎn)到backend/文件夾,運(yùn)行Docker build命令,最后將鏡像推送到注冊(cè)表。

我們的服務(wù)測(cè)試可以在另一個(gè)job中執(zhí)行,例如backend_test。所需的命令和腳本在很大程度上取決于我們項(xiàng)目的測(cè)試基礎(chǔ)結(jié)構(gòu),但基本上,我們調(diào)用的腳本與在本地開(kāi)發(fā)環(huán)境中使用的腳本相同。使用GitLab CI / CD也可以進(jìn)行更復(fù)雜的測(cè)試,例如集成或端到端測(cè)試。構(gòu)建并存儲(chǔ)在注冊(cè)表中后,可以輕松地將服務(wù)的Docker鏡像放入CI/CD管道中,并在測(cè)試中用作服務(wù)容器。

一旦構(gòu)建和測(cè)試,我們的Docker鏡像就可以部署了。我們?yōu)閼?yīng)用程序的每個(gè)服務(wù)定義部署作業(yè),在其中登錄服務(wù)器并觸發(fā)從GitLab Docker鏡像倉(cāng)庫(kù)中提取新映像。

總之,可以在monorepo中組織由幾個(gè)服務(wù)和庫(kù)組成的應(yīng)用程序的源代碼。盡管使用monorepo的部署更加復(fù)雜,但是僅需使用一個(gè)附加工具即可實(shí)現(xiàn)。GitLab是此類(lèi)工具的一個(gè)示例,它結(jié)合了存儲(chǔ)庫(kù)管理,強(qiáng)大的CI / CD管道和私有Docker鏡像倉(cāng)庫(kù)。


新聞標(biāo)題:使用GitLabCI實(shí)現(xiàn)多模塊項(xiàng)目CI/CD
新聞來(lái)源:http://www.5511xx.com/article/dhpcoje.html