我在 TeamCity 7.1.3 中有以下设置:
项目A
- 构建和部署
- 测试 A(快速)
- 测试 A(慢)
- 测试 A(非常慢)
项目 B
- 构建和部署 B
- 测试 B(快速)
- 测试 B(慢)
A 的所有测试都依赖于“Build & Deploy A”,B 的所有测试都依赖于“Build & Deploy B”。这些依赖项都是具有以下设置的快照依赖项:
- 如果有合适的版本,请不要运行新版本
- 仅使用来自合适的成功构建
- 在同一个代理上运行构建
所有测试都有 VCS 触发器。慢速测试仅在源代码管理中的特定文件夹发生更改时运行。当对项目 A 进行提交时,以下项目将添加到构建队列中:
- 构建和部署
- 测试 A(快速)
- 测试 A(慢)
- 测试 A(非常慢)
预提交构建在构建队列中以更高的优先级运行。因此,如果在“构建和部署 A”运行时对项目 B 进行预提交检查,则构建队列如下所示:
- 构建和部署 B
- 测试 B(快速)
- 测试 B(慢)
- 测试 A(快速)
- 测试 A(慢)
- 测试 A(非常慢)
这种设置的问题在于,这意味着 A 的测试是在项目 B 部署之后运行的。这是一个问题,因为项目 B 的部署覆盖了项目 A 所需的一些文件。被个人构建覆盖的文件是部署文件,它们不在 checkout 文件夹中,这就是它们不回滚的原因。有没有办法强制测试的构建链不被中断?
如果我从依赖项中删除“如果有合适的版本,则不运行新版本”设置,则每个测试都需要完整的构建和部署。较慢的测试不能依赖其他测试来建立线性链,因为有时会运行“测试 A(非常慢)”,但不会运行“测试 A(慢)”。
不幸的是,目前无法拆分构建和部署来创建人工制品。
有没有办法在 TeamCity 中有效地进行设置?