VSTS Azure for DevOps: 在拉取请求上实现单元测试检查机制

75次阅读
没有评论

问题描述

想知道在VSTS Azure for DevOps中是否有一种方法可以在拉取请求上实现单元测试检查机制。条件是只允许更改单元测试文件夹中的内容的提交。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

如果你有这个选项,Github提供了Actions,可以在不同的事件上运行工作流程,其中之一是push事件。你可以使用Actions来运行单元测试并检查更改的文件夹。
如果Github不是一个选项,我建议创建一个构建,在该构建中,只有在主分支上完成构建时才进行部署。在功能分支上,当提交代码时,将进行构建,该构建将拉取最新的代码,编译,然后运行单元测试、安全扫描和代码覆盖率(如果适用)。由于这是一个功能分支,构建在此结束。如果是在主分支上,它将执行打包/部署的步骤。
在分支 > 主分支 > 分支策略(在省略菜单中)中,添加一个构建验证。我建议将其标记为必需的。如果你不担心合并冲突导致重新构建,你可以使其在主分支更改后立即过期(需要重新构建,会在合并冲突时失败)。如果你是一个大团队,可能经常互相干扰,你可以使其永不过期,并由开发人员在能够合并之前手动修复。

方案2

使用脚本或工具来管理容器的启动顺序可能会增加复杂性,并且需要确保容器A和容器B之间的依赖关系正确设置。
另一种方法是编写脚本或使用工具来控制容器的运行顺序。你可以使用docker run命令来手动控制容器的启动顺序,或者使用一些第三方工具来管理容器的依赖关系。

示例:

以下是一个简单的bash脚本示例,可以在容器A启动后启动容器B:

#!/bin/bash
# 启动容器A
docker run -d --name container_a your_image_a
# 等待容器A完全启动
while ! docker exec container_a echo "Container A is ready"; do
  sleep 1
done
# 启动容器B
docker run -d --name container_b your_image_b

在这个示例中,我们首先使用docker run命令启动容器A,并将其命名为container_a。然后,使用一个循环来等待容器A完全启动(这里是通过在容器内运行echo命令来测试)。一旦容器A就绪,我们再使用docker run命令启动容器B,并将其命名为container_b

正文完