首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有可能防止构建链在TeamCity中被中断?

是否有可能防止构建链在TeamCity中被中断?
EN

Stack Overflow用户
提问于 2013-01-31 10:23:58
回答 2查看 1.9K关注 0票数 2

我在TeamCity 7.1.3中设置了以下内容:

项目A

  • 构建和部署A
  • 测试A(快速)
  • 测试A(慢)
  • 测试A(非常慢)

项目B

  • 构建和部署B
  • 测试B(快速)
  • 测试B(慢)

A的所有测试都依赖于'Build & Deploy‘,B的所有测试都依赖于'Build & Deploy’。这些依赖项都是具有下列设置的快照依赖项:

  • 如果有合适的版本,请不要运行新版本。
  • 只使用适当的成功构建。
  • 在同一个代理上运行构建

所有的测试都有VCS触发器。只有在更改源代码管理中的特定文件夹时,才会运行慢速测试。当提交到项目A时,以下项目将被添加到构建队列中:

  • 构建和部署A
  • 测试A(快速)
  • 测试A(慢)
  • 测试A(非常慢)

预提交构建在构建队列中以更高的优先级运行。因此,如果在运行“build & Deploy”时对项目B进行预提交检查,则生成队列如下所示:

  • 构建和部署B
  • 测试B(快速)
  • 测试B(慢)
  • 测试A(快速)
  • 测试A(慢)
  • 测试A(非常慢)

这个设置的问题是,这意味着A的测试是在项目B被部署之后运行的。这是一个问题,因为项目B的部署覆盖了项目A所需的一些文件。被个人构建覆盖的文件是部署在签出文件夹中的文件,这就是为什么它们没有回滚的原因。有没有办法强制测试的构建链不被中断?

如果我从依赖项中删除了“如果有合适的话不要运行新构建”设置,那么每个测试都需要一个完整的构建和部署。较慢的测试不能依赖于其他测试来建立一个线性链,因为有时“测试A(非常慢)”正在运行,而“测试A(很慢)”则不是。

不幸的是,目前还不可能将构建和部署分开来创建人工制品。

有什么方法可以在TeamCity中有效地设置这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-11 14:58:19

我通过让“build &deploy”构建配置将一个文本文件写入包含构建类型和生成号的部署文件夹,从而解决了这个问题。所有测试都会将文本文件中的值与当前构建快照依赖项进行比较。如果它们的值不同,则重新触发生成(强制重建依赖项),然后取消当前构建。

通过调用以下命令取消生成:

代码语言:javascript
运行
复制
http://teamcity.jetbrains.com/guestAuth/ajax.html?comment=<CommentMessage>&submit=Stop&buildId=<BuildId>&kill

如何在将依赖项设置为重新生成时触发生成:

Is it possible to force a TeamCity build to rebuild dependencies when triggered over HTTP?

这意味着,当测试不同步时,部署将被重新触发,然后测试将运行。

票数 1
EN

Stack Overflow用户

发布于 2013-02-04 17:34:53

以下是我收集的信息:

  • A和B应视为相互排斥。
  • A应该始终具有比B更低的构建优先级,但是
  • 一旦启动,A就不应该被打断。

在这个问题上也许有办法和TeamCity对抗,我不知道。如果您对更改流程持开放态度,那么其中之一可能对您有用:

  1. 克隆您的环境,以便可以将AB部署到不同的目标。这将使它们完全独立地运行。使用多个构建代理(至少一个用于AB),以允许速度更快、优先级更高的B与较慢、更低优先级的A同时执行。(我认为,这将是一项重要的福利。)
  2. 使你的过程更加原子化。将各种构建/部署/测试片段合并到一个配置中,从而确保A构建链中挂起的部分不会被B替换。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14623473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档