基于事件驱动架构构建微服务第11部分:持续集成

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于事件驱动架构构建微服务第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部分:持续集成的主要内容,如果未能解决你的问题,请参考以下文章

基于事件驱动架构构建微服务第14部分:查询API

基于事件驱动架构构建微服务第7部分:在仓储上实现事件溯源

基于事件驱动架构构建微服务第15部分:SPA前端

基于事件驱动架构构建微服务第4部分:repositories

基于事件驱动架构构建微服务第9部分:处理更新

基于事件驱动架构构建微服务第12部分:向Apache KAFKA生成事件