2016-03-07 27 views
0

我们正在为使用git的项目设置teamcity。我们有这样的争论,我们是否应该触发每个提交或每个拉取请求的构建。Teamcity基于每个git提交构建vs构建拉取请求

如果我推一个分支说A,并且我们已经配置了对master的pull请求,那么这个构建是如何触发合并代码将会出现,还是只会构建分支?

让我们想象一下,我们有我们的配置到TeamCity的每建pull请求

现在可以说我有一个分支主,开发一个checksout一个分支ftb_A。创建一个新的测试用例并提交。开发人员代码尚未合并到主人。 Develope B创建一个新的分支ftb_B,他还创建了新的测试用例。现在开发人员A推送分支并提出一个拉取请求,以便构建运行通过开发A运行添加的测试用例。现在,来自开发人员A的请求被合并,并且新创建的tesr案例现在在master中可用。

现在开发人员B也推动他的分支,但是他没有改造他的分支,即开发人员A添加的测试用例在brach ftb_B中不可用。现在开发者B提出了一个拉取请求。所以构建被触发。现在我的问题是当构建触发了由开发人员B提出的拉请求时,开发人员在主控中添加的测试用例是否会运行

+0

您能否按照具体要求更新问题描述? – SnehalK

+0

是的,它会运行。 Git会跟踪文件中的更改,并能够在您的示例中正确合并它们。即使开发者B没有使用开发者A的代码更新她/他的分支,他/她也不能合并她/他的分支,或者根据是否有冲突,两个更改将一起工作。 –

回答

1

虽然没有指出,但我会假设您在此处使用GitHub 。

简而言之:是的,无论何时将更改推送给主设备,来自ftb_B的pull请求都会被更新。但是,您必须在拉取请求分支上触发构建,而不是在ftb_B本身上。

解释:当创建一个来自ftb_B的拉取请求时,GitHub会生成一个新的(隐藏)分支,该分支由ftb_B合并到主控端的更改组成。这使您可以查看更改,运行TeamCity构建,并在接受拉取请求之前执行您可能需要的任何其他步骤。如果来自ftb_A的拉取请求在之前被接受从ftb_B创建拉取请求,则这些更改自然会包含在拉取请求分支中。如果来自ftb_A的拉取请求在之后被接受从ftb_B创建拉取请求,则GitHub将检测到主分支中的更改并为您更新拉取请求分支。无论哪种情况,你都很好。

流量可能是这个样子:

  1. ftb_A拉请求创建
  2. ftb_A拉通过GitHub的
  3. 自动创建ftb_B拉请求创建
  4. ftb_B拉通过自动创建请求支线请求分支GitHub
    • 此分支确实是而不是包括在这一点
  5. ftb_A拉动请求接受
  6. 主被更新
  7. ftb_B拉请求分支由GitHub的
    • 现在从ftb_A变化反映在拉自动更新从ftb_A变化请求分支

检查了解更多信息:
https://blog.jetbrains.com/teamcity/2013/02/automatically-building-pull-requests-from-github-with-teamcity/

+0

您讨论的第二种情况是,如果来自ftb_A和ftb_B的拉取请求都发生并且ftb_A拉取请求被合并,那么git会自动更新ftb_B拉取请求。在这种情况下,teamcity会自动触发一个来自ftb_B的拉取请求。 –

+0

@AmbujJauhari:是的,它会的。您必须在TeamCity的构建中配置VCS触发器,然后它会检测分支变化并为您触发构建。如果您不希望在所有提交中触发构建,则可以将触发器配置为仅使用分支过滤器自动构建提交请求分支。有关详情,请参阅文档:https://confluence.jetbrains.com/display/TCD9/Configuring+VCS+Triggers#ConfiguringVCSTriggers-BranchFilter –

相关问题