4

有没有办法将成功构建的功能分支推送到另一个分支?

我想要这样的东西:

Git 存储库(Gitorious/GitHub 等等)。分支机构:

  • master(当前项目的代码)
  • 质量保证(代码等待 QA 的分支)
  • 功能分支(许多远程分支,开发人员可以在其中开发他们的功能)

开发人员应该只有对 master 的读取权限和对他的功能分支的读/写 QA 读/写质量保证分支 TeamCity - 读/写 master,质量保证,只读到功能分支

现在我想要一个这样的工作流程:

  1. 开发人员从 master 分支中提取代码。
  2. 开发人员创建功能分支 A。
  3. 开发人员将更改推送到远程功能分支A
  4. TeamCity 监控功能分支
  5. TeamCity 在每次提交时触发构建和测试。
  6. 如果构建成功,TeamCity 会将更改推送到质量保证分支
  7. QA 团队检查代码(可能会运行一些其他测试、完整性测试)
  8. 如果 QA 确定一切正常,他们会将更改推送到 master 分支。

我不知道 QA 的那一步是否必要,也许成功构建和测试后的每个功能分支都应该与 master 合并。

首先我想知道:这有意义吗?我刚从 CI 开始,我不知道它是否有效。

其次,如果这个工作流程是正确的,我想知道如何配置 TeamCity 来做类似的事情,如果会出现某种冲突或哪里可能出错怎么办。

最近我观看了有关 Git+Jenkins+Gerrit 的演示文稿,在那里我看到了类似的东西,但对于 .NET 开发,我个人更喜欢 TeamCity,但如果使用 Jenkins 更容易做到这一点,我会改变主意。

4

2 回答 2

2

似乎是一个有效的场景。

更新:自 TeamCity 8.1 以来,有一个专用的自动合并功能。

较早的回复:TeamCity 没有对自动合并/推送分支的捆绑支持(对于上面列表中的第 6 个)。TeamCity 问题跟踪器中有一个相关的功能请求

要让场景在当前 TeamCity 版本中运行,您可以在 TeamCity 中使用具有快照依赖关系的单独构建配置并在成功时触发,这将获取功能分支(由 TeamCity 完成),然后构建脚本将运行合并和推送 git 命令。您需要使用 TeamCity 代理端结帐才能执行此操作。

于 2012-12-17T10:47:36.630 回答
1

我们已经使用 github 实现了一个与此目标相同的工作流(尽管实现方式略有不同),虽然它可能涉及一些设置,但肯定会解决 teamcity 的一些问题。我在这里对类似问题有另一个答案

我们的解决方案基本上涉及每个开发人员拥有自己的主存储库分支,他们拥有读取和写入权限a 以及从主(绿色)存储库中提取权限。开发人员在分支上工作(每个故事一个,短暂的),这些分支是由团队城市在他们推送到他们的个人分支时构建的。

一旦开发人员准备好将他们的更改合并到主分支,他们就会提交拉取请求并审查代码,然后最终与他们的主分支合并。然后他们将他们的主分支推到他们的个人分叉上。

如果此构建成功并且所有测试都通过(此时我们也部署到 azure,然后针对部署运行测试),则团队城市构建代理将主分支推送到绿色存储库。

此推送必须是快进或推送被拒绝(这解决了自动合并的任何潜在问题,这让我感到恐惧)

您可以轻松地扩展它,让开发人员分支推送到 QA 存储库,然后 QA 提交到构建服务器,触发推送到绿色(或者让 QA 有权推送到绿色)。

teamcity 设置可能有点麻烦,因为您需要将事物与快照依赖项链接起来,这会抑制使用模板的能力,并且意味着每个开发人员至少需要 2 个构建配置(我们有 4 个来处理部署到azure 并针对 azure 运行测试),所以如果你有很多开发人员,这可能会很难管理。理想情况下,您不需要这样做,但由于teamcity中的问题仍未解决,如果测试失败,您不能总是让构建快速失败。

于 2013-01-11T12:37:41.333 回答