原文链接: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