首页 > 解决方案 > TeamCity 中依赖项的无修订同步的复合构建

问题描述

我正在尝试设置一个管道,用于针对拉取请求运行各种测试到我的存储库中。存储库是由 Bitbucket Server 托管的 git 存储库,TeamCity 是 Enterprise 2019.1.5(内部版本 66605)。该任务有几个关键方面:

  1. 有很多测试。一种方法或其他测试应并行运行以实现合理的执行时间。测试已经划分为单独的 TeamCity 构建配置,每个都有足够好的执行时间。
  2. 可用于该任务的构建代理要少得多,因此特定构建在构建队列中花费相当长的时间(最多 1-2 小时)并非不可能。
  3. 测试结果应作为单个聚合值报告给 Bitbucket。即,如果从 p.1 开始有 3 个单独的构建,其中两个通过,一个失败,那么 Bitbucket 应该收到单个“失败”构建状态。
  4. 理想情况下,管道应该由功能分支更改触发(Bitbucket 术语中的 refs/pull-requests/123/from),但功能分支的结帐合并到目标分支(Bitbucket 术语中的 refs/pull-requests/123/merge) .

鉴于上述要求,我尝试了 Composite Build Configuration ( https://www.jetbrains.com/help/teamcity/composite-build-configuration.html ),因为它似乎非常适合这项工作。因此,我使用 p.1 中的正确构建作为快照依赖项、“拉取请求”和“提交状态发布者”构建功能设置了单个复合构建。它完美地工作,除了一件事......

我似乎无法解决的唯一问题是,当构建链添加到构建队列时,依赖项中的 VCS 根会收集更改。这意味着由于 p.2(在构建队列中花费的最大时间不可忽略),一些构建最终会针对有点过时的源运行。理想情况下,我希望能够针对最新源运行构建。

所以我的问题是是否有任何方法可以禁用依赖项的修订同步?或者也许我可以在不使用快照依赖项的情况下以完全不同的方式解决整个问题?

在社区论坛交叉发布:https ://teamcity-support.jetbrains.com/hc/en-us/community/posts/360006745840

标签: continuous-integrationteamcitypull-requestbitbucket-server

解决方案


推荐阅读