Continuous integration 在将新项目以更高优先级添加到生成队列后,如何在TeamCity中重新获取快照依赖关系?

Continuous integration 在将新项目以更高优先级添加到生成队列后,如何在TeamCity中重新获取快照依赖关系?,continuous-integration,teamcity,teamcity-7.0,Continuous Integration,Teamcity,Teamcity 7.0,我有许多构建配置,它们链接在一起 A B C D E 每个构建都有一个快照依赖于链中以前的配置,这意味着构建B依赖于a,而构建C、D和E依赖于B 每个配置都设置了一个触发器,用于在链中的上一个构建成功完成时触发。此设置的问题在于运行个人生成以测试远程更改时。如果B在针对a向队列添加远程更改时运行,则个人生成将首先运行a(个人生成),C、D和E将添加到队列中。这是一个问题的原因,因为C、D和E是针对在步骤a和B中部署的代码运行的测试。这意味着在运行测试之前,通过个人更改有效地重新部署了代码 有两

我有许多构建配置,它们链接在一起

A
B
C D E
每个构建都有一个快照依赖于链中以前的配置,这意味着构建B依赖于a,而构建C、D和E依赖于B

每个配置都设置了一个触发器,用于在链中的上一个构建成功完成时触发。此设置的问题在于运行个人生成以测试远程更改时。如果B在针对a向队列添加远程更改时运行,则个人生成将首先运行a(个人生成),C、D和E将添加到队列中。这是一个问题的原因,因为C、D和E是针对在步骤a和B中部署的代码运行的测试。这意味着在运行测试之前,通过个人更改有效地重新部署了代码

有两种可以接受的方法来解决这个问题

  • 在将A作为个人构建运行之后,在C、D和E之前重新请求A在不进行这些更改的情况下运行
  • 将A作为个人生成运行后,请从生成队列中删除C、D和E,因为这不是针对每个提交运行测试的必要条件
  • 我不知道如何实施这两个选项中的任何一个。快照依赖项当前设置为“如果有合适的版本,则不运行新版本”,但如果我更改此设置,则不可能在不再次遍历整个链的情况下重新运行失败的测试


    这是配置TeamCity的一种糟糕的方法吗?如果是这样,构建构建链的更好方法是什么?

    我通过实现这个问题中公认的答案解决了这个问题:

    此解决方案从上面实现了选项1。通过使用包含当前部署值的文本文件,如果依赖项过期,则可以通过HTTP取消/重新触发生成