亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用GitLabCI實現多模塊項目CI/CD

發布時間:2021-09-06 15:04:14 來源:億速云 閱讀:325 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關如何使用GitLabCI實現多模塊項目CI/CD,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Monorepo在開發多服務應用程序方面的優勢。以及如何使用GitLab CI/CD和Docker輕松構建,測試和部署此類應用程序。

基于現代Web的應用程序通常都包含多種服務。例如,后端API和前端客戶端。在規模擴大成為問題的大型項目中,服務也可以拆分為多個微服務。如何在這樣的項目中組織源代碼?一種解決方案是monorepo,即項目中所有源代碼在同一個存儲庫中管理。還有一種是每個微服務分別創建一個存儲庫管理。monorepo方法允許輕松訪問整個代碼庫,這帶來了許多優勢,例如易于代碼重用、簡化了依賴性管理。但每服務語義版本控制和部署過程將會更加復雜。

如何使用GitLabCI實現多模塊項目CI/CD

我將通過一個示例項目來解釋monorepo的概念及其部署。該項目是一個僅由兩項服務組成的Web應用程序:后端和前端。例如,后端可以是運行在服務器上并提供REST或GraphQL  API的Node.js應用程序。前端可以是用JavaScript框架(例如React或Vue.js)編寫的單頁應用程序,該應用程序由一個簡單的Web服務器提供給客戶端。

所有源代碼都在一個monorepo中進行管理。我們的簡單項目的文件結構如下:

monorepo/     backend/         src/         Dockerfile     frontend/         src/         Dockerfile     .git/     .gitignore     .gitlab-ci.yaml     docker-compose.yaml

在本地開發過程中以及服務器上的生產版本中,我們使用Docker容器。因此,每個服務都有一個Dockerfile描述其Docker鏡像。該文件docker-compose.yaml用于在本地開發環境中配置和啟動容器。可以在服務器上使用類似的文件來運行應用程序,或者您也可以使用Docker編排工具,例如Kubernetes。

CI/CD管道

我們的目標是每次發布新版本(即“代碼提交到GitLab”)時自動將應用程序構建,測試和部署到服務器。這包括構建和測試服務,將每個服務捆綁在Docker映像中,并將這些映像存儲在(私有)GitLab  Docker Registry中。最后,服務器會自動收到有關新版本的通知,并會觸發從注冊表中提取新映像。所有這些都可以通過GitLab CI /  CD來實現。這是一個非常強大的工具。基本上,GitLab CI /  CD管道包括幾個階段如build,test和deploy。該管道配置有一個名為.gitlab-ci.yaml的文件,該文件存儲在我們存儲庫的根目錄中。如果是monorepo,我們必須確保觸發了GitLab  CI / CD管道的正確階段。而且,我們通常只希望構建,測試和部署應用程序中已更改的那些服務,而不是將所有服務都合并在一起,因為這可能會非常耗時。

在.gitlab-ci.yaml文件中我們為每個服務和每個階段定義job。為了確保僅在更改服務源代碼后才執行該服務的作業,我們可以將only/changes子句與文件夾路徑的正則表達式結合使用。例如,后端服務的構建作業可以定義如下:

backend_build:   stage: build   only:     changes:       - "backend/**/*"     ...

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

backend_build:   ...   script:     - docker login -u $DOCKER_USER -p $ACCESS_TOKEN $CI_REGISTRY     - cd backend     - docker build -f Dockerfile --tag latest .     - docker push latest   ...

在第一行中,我們使用用戶名和訪問令牌登錄到GitLab Docker  Registry,該用戶名和訪問令牌先前已在變量名稱$DOCKER_USER和中定義$ACCESS_TOKEN(在GitLab項目的設置中)。然后,我們轉到backend/文件夾,運行Docker  build命令,最后將鏡像推送到注冊表。

我們的服務測試可以在另一個job中執行,例如backend_test。所需的命令和腳本在很大程度上取決于我們項目的測試基礎結構,但基本上,我們調用的腳本與在本地開發環境中使用的腳本相同。使用GitLab  CI /  CD也可以進行更復雜的測試,例如集成或端到端測試。構建并存儲在注冊表中后,可以輕松地將服務的Docker鏡像放入CI/CD管道中,并在測試中用作服務容器。

一旦構建和測試,我們的Docker鏡像就可以部署了。我們為應用程序的每個服務定義部署作業,在其中登錄服務器并觸發從GitLab  Docker鏡像倉庫中提取新映像。

關于“如何使用GitLabCI實現多模塊項目CI/CD”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

化州市| 广昌县| 东海县| 日照市| 衡东县| 太仓市| 湘乡市| 沛县| 郁南县| 海伦市| 万宁市| 贵港市| 永昌县| 阆中市| 安远县| 仪征市| 阿拉善右旗| 临猗县| 新化县| 韶山市| 驻马店市| 梅河口市| 厦门市| 如皋市| 镇宁| 松桃| 集贤县| 孟村| 安陆市| 安达市| 天峻县| 衡阳市| 方正县| 增城市| 固安县| 荔浦县| 景宁| 高青县| 铜川市| 探索| 西乌珠穆沁旗|