【问题标题】:TeamCity push feature branches to master branchTeamCity 将功能分支推送到主分支
【发布时间】:2012-12-15 21:40:08
【问题描述】:

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

我想要这样的东西:

Git 存储库(Gitorious/GitHub 等)。分行:

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

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

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

  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 更容易做到这一点,我会改变主意。

【问题讨论】:

    标签: git jenkins continuous-integration workflow teamcity


    【解决方案1】:

    似乎是一个有效的场景。

    更新:从 TeamCity 8.1 开始,有一个专用的 Automatic Merge 功能。

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

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

    【讨论】:

    【解决方案2】:

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

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

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

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

    这个推送必须是快进,否则推送被拒绝(这解决了自动合并的任何潜在问题,这让我感到害怕)

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

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

    【讨论】:

    • 我已经阅读了您的解决方案,并根据它配置了 TeamCity。这是一个 PoC,只是为了展示它的外观,但现在我将它设置为生产。谢谢分享一个很棒的帖子。而不是 github,我想使用 Atlassian Stash(小团队)。不知道我是否会切换到Girious,我们会看到。 GitHub 不是一个选择。遗憾的是 TeamCity 需要两个构建配置,因为我们可以很快用完免费配置,但正如我所说,我们将看到它是如何工作的。多谢一次。
    猜你喜欢
    • 2019-02-02
    • 2023-01-30
    • 2014-01-21
    • 2015-09-10
    • 1970-01-01
    • 2019-12-10
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多