Teamcity 基于每个 git 提交构建与基于拉取请求构建

Teamcity build on every git commit vs build on pull request

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

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

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

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

现在开发者 B 也推送了他的分支,但是他没有 rebased 他的分支,即开发者 A 添加的测试用例在分支中不可用 ftb_B。现在开发者 B 提出了一个 pull request。因此构建被触发。现在我的问题是,当开发人员 B 提出的拉取请求触发构建时,开发人员 A 在 master 中添加的测试用例将 运行 或不

虽然没有指明,但我假设您在这里使用 GitHub。

简而言之:是的,来自 ftb_B 的 pull request 将在任何时候将更改推送到 master 时更新。但是,您必须在 拉取请求分支 上触发您的构建,而不是在 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. 自动创建的拉取请求分支
  4. ftb_B 已创建拉取请求
  5. ftb_B GitHub 自动创建的拉取请求分支
    • 此分支 包含 ftb_A 的更改
  6. ftb_A 已接受拉取请求
  7. 大师已更新
  8. ftb_B 拉取请求分支由 GitHub 自动更新
    • 现在 ftb_A 的更改反映在拉取请求分支中

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