TeamCity 多个 VCS 根

TeamCity Multiple VCS Roots

我们使用私人 GitHub 组织作为版本控制。将任务分配给开发人员后,他们会分叉主存储库,更改代码,然后提交拉取请求以将更改合并到主存储库的 master 分支中。

我们还在 CI 中使用 TeamCity。它当前配置为启动 VCS 提交的构建,它在内部构建、测试工件并将其部署到工件存储库。为此,Team City 构建配置安装了多个 VCS 根目录;一个用于主要的,1 个用于每个开发人员的分支。

问题在于,Team City 在提交时会从所有这些库中提取,假设它们都是构建所必需的,而不是只允许您从触发构建的单个存储库中提取。关于如何在 Team City 中为每个项目创建 n 个构建配置(其中 n == 从事项目的开发人员数量)的情况下如何实现这一点,有什么想法吗?

我看到保留当前工作流程的方法是关闭自动结帐 (VCS Checkout Mode), and checking out code manually in an additional command-line build step, with a parameter %teamcity.build.branch% (logical branch name)。 即:

git clone ...
git checkout %teamcity.build.branch%

如果开发者的 VCS 根目录发生变化,触发器将开始工作,完成分支环境变量;不会发生自动签出,然后构建步骤将只签出需要的分支。仅适用于一个 git URL.

在 JetBrains 论坛发帖后,我被指向 blog that answers my question

TL;DR:我使用功能分支的方法不适用于 GitHub 的工作流程。相反,应该使用 Forks 和 Pull Requests。引用的博客显示了如何使用 Team City 触发合并请求。只需在您的 VCS 根目录中将 +:refs/pull/*/head 添加到 "Branch Specification",所有对源存储库的拉取请求都会触发您的构建配置。