基于事件驱动架构构建微服务第11部分:持续集成
原文鏈接:https://logcorner.com/building-microservices-through-event-driven-architecture-part12-continuous-integration/
在本教程中,我將展示如何設置docker持續集成以在docker容器內構建和運行單元測試。
因為我將使用kubernetes在容器中運行微服務,所以單元測試、集成測試、持續集成和持續交付將使用docker鏡像和容器來完成。
創建Azure DevOps項目
我要構建的項目的代碼源在github https://github.com/logcorner/LogCorner.EduSync.Speech.Command
因此,我至少有2個解決方案來使用相關的git存儲庫設置azure devops持續集成:
我可以將代碼源導入azure devops并使用Azure Repos Git,這樣代碼源將被導入到azure devops
我也可以使用Github中的repository,代碼源在github上
我將展示如何設置這兩個解決方案,但在本教程中,我將使用第二個解決方案。
創建項目
打開https://dev.azure.com/并創建一個帳戶或登錄(如果你已有帳戶)
然后創建一個新項目,我將其命名為LogCorner.EduSync.Speech.Command
我將可見性設為公開,因為它是一個演示,使用git版本控制選項和Scrum
創建Azure DevOps管道
選擇代碼源
方案一:導入github代碼源
選擇左側的Repos,然后點擊files,然后點擊import
轉到你的github帳戶并復制存儲庫的url以導入 https://github.com/logcorner/LogCorner.EduSync.Speech.Command.git
然后我將創建一個個人訪問令牌,因為gihub將使用它來授權對存儲庫的訪問。
要創建個人訪問令牌 (PAT),請選擇設置,然后選擇開發人員設置
單擊個人訪問令牌,單擊新建個人訪問令牌,為其命名并選擇范圍
對于我選擇的repo范圍,設置并運行構建就足夠了
將github存儲庫url和PAT粘貼到azure devops彈出窗口中,輸入用戶名并單擊導入
在azure devops上導入代碼源如下:
方案二:使用github作為代碼源
對于此選項,你必須先創建構建管道并選擇github作為選定源,github會要求我使用OAuth設置可信連接。
選擇左側的Pipelines并點擊Create Pipeline
選擇Github,給一個連接名稱并點擊授權
它會提示你輸入github憑據
接受,然后選擇要構建的存儲庫和分支,然后單擊繼續。
這里我選擇了logcorner/LogCorner.EduSync.Speech.Command和master分支。
創建管道任務
我使用了經典編輯器并創建了一個空管道
構建任務
對于構建任務,我使用docker-compose任務,我必須使用文件運行Docker-compose build命令:
docker-compose.yml
docker-compose.override.yml
docker-compose-unit-tests.yml
docker-compose.override-unit-tests.yml
這是此構建任務的yaml
此任務的yaml文件位于此處:LogCorner.EduSync.Command\src\CICD\BuilTask.yml
運行單元測試任務
對于運行單元測試任務,我使用docker-compose任務,我必須使用文件運行Docker-compose up命令:
docker-compose.yml
docker-compose.override.yml
docker-compose-unit-tests.yml
docker-compose.override-unit-tests.yml
這是運行單元測試任務的yaml代碼
LogCorner.EduSync.Command\src\CICD\PublishTestResultTask.yml
我使用一個docker-compose任務來運行4個項目的單元測試,因此一個項目單元測試可能失敗而其他項目成功。
我發現的最簡單的方法是即使測試失敗也讓任務通過,然后如果測試失敗則發布測試結果任務失敗。
另一種解決方案是為每個項目創建一個運行單元測試任務,并使用運行特定服務鏡像操作而不是運行docker-compose命令
此任務的yaml文件位于此處:LogCorner.EduSync.Command\src\CICD\RunUnitTestTask.yml
發布測試結果任務
這是發布測試結果任務的yaml文件
此任務的yaml文件位于此處:LogCorner.EduSync.Command\src\CICD\PublishTestResultTask.yml
運行構建
為了測試構建配置,我可以觸發一個新的構建
構建日志
測試結果
代碼源可在此處獲得:https://github.com/logcorner/LogCorner.EduSync.Speech.Command/tree/Feature/DevOps
azure devops項目在這里 https://logcorner.visualstudio.com/LogCorner.EduSync.Speech.Command
總結
以上是生活随笔為你收集整理的基于事件驱动架构构建微服务第11部分:持续集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 6新特性试用 | 最小Web
- 下一篇: 持续集成、持续交付(CI/CD)开篇,先