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 将检测主分支中的更改并且为您更新拉取请求分支。所以无论哪种情况你都很好。
流程可能如下所示:
- ftb_A 已创建拉取请求
- ftb_A GitHub
自动创建的拉取请求分支
- ftb_B 已创建拉取请求
- ftb_B GitHub 自动创建的拉取请求分支
- 此分支 不 包含 ftb_A 的更改
- ftb_A 已接受拉取请求
- 大师已更新
- ftb_B 拉取请求分支由 GitHub 自动更新
- 现在 ftb_A 的更改反映在拉取请求分支中
查看此以了解更多信息:
https://blog.jetbrains.com/teamcity/2013/02/automatically-building-pull-requests-from-github-with-teamcity/
我们正在为使用 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 将检测主分支中的更改并且为您更新拉取请求分支。所以无论哪种情况你都很好。
流程可能如下所示:
- ftb_A 已创建拉取请求
- ftb_A GitHub 自动创建的拉取请求分支
- ftb_B 已创建拉取请求
- ftb_B GitHub 自动创建的拉取请求分支
- 此分支 不 包含 ftb_A 的更改
- ftb_A 已接受拉取请求
- 大师已更新
- ftb_B 拉取请求分支由 GitHub 自动更新
- 现在 ftb_A 的更改反映在拉取请求分支中
查看此以了解更多信息:
https://blog.jetbrains.com/teamcity/2013/02/automatically-building-pull-requests-from-github-with-teamcity/