我们使用私有GitHub组织作为版本控制。将任务分配给开发人员时,他们会分叉主存储库,更改代码并提交拉取请求,以将更改合并到主存储库的主分支中。
我们也在使用TeamCity进行CI。它目前被配置为启动VCS提交的构建,VCS提交在内部构建,测试和部署工件到工件存储库。为此,Team City构建配置安装了多个VCS根目录;一个用于主要,一个用于每个开发人员的分支。
问题在于,当提交提交时,Team City会从所有提交中获取,假设它们对于构建而言都是必需的,而不是仅允许您从触发构建的单个存储库中提取。有关如何实现这一点的任何想法,而无需在Team City中为每个项目创建n个构建配置(其中n ==开发项目的开发人员数量)?
答案 0 :(得分:2)
我看到这样做,保留当前工作流程正在关闭自动结帐(VCS Checkout Mode),并在另一个命令行构建步骤中手动检出代码,参数为%teamcity.build.branch% (logical branch name)。 即:
git clone ...
git checkout %teamcity.build.branch%
如果开发人员的VCS根目录发生变化,则触发器将启动作业,履行分支env变量;不会发生自动结账,然后构建步骤将仅检出所需的分支。仅适用于一个git网址。
答案 1 :(得分:0)
在JetBrains论坛上发帖后,我被指向blog that answers my question。
TL; DR :我使用功能分支的方法不适用于GitHub的工作流程。相反,应该使用Forks和Pull Requests。引用的博客显示了如何使用Team City触发Pull请求。只需将+:refs/pull/*/head
添加到"分支规范"在您的VCS Root中,对Source存储库的所有pull请求都将触发您的Build Configuration。