【问题标题】:Teamcity build on every git commit vs build on pull requestTeamcity 在每个 git 提交上构建与在拉取请求上构建
【发布时间】:2016-03-12 07:53:22
【问题描述】:

我们正在为使用 git 的项目设置 teamcity。我们就是否应该在每次提交或每次拉取请求时触发构建进行了辩论。

如果我推了一个分支说 A,并且我们已经在 master 上配置了 pull request 构建,那么构建会根据合并代码的显示方式触发还是只构建分支?

假设我们已经配置了我们的 teamcity 来构建每个拉取请求

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

现在开发人员 B 也推送了他的分支,但他没有重新建立他的分支,即开发人员 A 添加的测试用例在分支 ftb_B 中不可用。现在开发人员 B 提出了一个拉取请求。所以触发了构建。现在我的问题是,当开发人员 B 提出的拉取请求触发构建时,开发人员 A 在 master 中添加的测试用例是否会运行

【问题讨论】:

  • 能否请您根据确切要求更新问题描述?
  • 是的,它会运行。 Git 跟踪文件中的更改并能够在您的示例中正确合并它们。即使开发人员 B 没有使用开发人员 A 的代码更新她/他的分支,他/她也无法合并她/他的分支,或者根据是否存在冲突,两个更改将一起工作。

标签: git teamcity


【解决方案1】:

虽然没有说明,但我假设你在这里使用的是 GitHub。

简而言之:是的,来自 ftb_B 的拉取请求将在任何时候更新推送到 master。但是,您必须在 拉取请求分支 上触发构建,而不是在 ftb_B 本身上。

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

流程可能如下所示:

  1. ftb_A 拉取请求已创建
  2. ftb_GitHub 自动创建的拉取请求分支
  3. ftb_B 拉取请求已创建
  4. ftb_B 由 GitHub 自动创建的拉取请求分支
    • 此时此分支包含来自 ftb_A 的更改
  5. 已接受 ftb_A 拉取请求
  6. master 已更新
  7. ftb_B 拉取请求分支由 GitHub 自动更新
    • 现在来自 ftb_A 的更改会反映在拉取请求分支中

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

【讨论】:

  • 您讨论的第二种情况,如果来自 ftb_A 和 ftb_B 的拉取请求都被提出并且 ftb_A 拉取请求被合并,git 将自动更新 ftb_B 拉取请求。在这种情况下,teamcity 会自动触发来自 ftb_B 的拉取请求的构建吗??
  • @AmbujJauhari:是的,它会的。您必须在 TeamCity 中的构建上配置 VCS 触发器,然后它将检测分支更改并为您触发构建。如果您不想在所有提交上触发构建,您可以将触发器配置为仅在提交上自动构建以使用分支过滤器拉取请求分支。有关更多信息,请参阅文档:confluence.jetbrains.com/display/TCD9/…
  • 有人知道 Github 之外的解决方案吗?例如在 bitbucket 上?
猜你喜欢
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多