我在一家 SaaS 公司工作,该公司每六周向我们的客户发布新功能和错误修复。当我们编写代码更改时,它们在到达生产服务器之前会经过不同的步骤(如状态机)。这些步骤会有所不同,具体取决于更改是在常规开发周期中完成还是作为紧急修复完成。我们目前正在使用 Harvest 来管理步骤并跟踪正在向客户发布的代码(通过包进行的功能和错误修复),并且从这个意义上说它运行良好。
不幸的是,从程序员的角度来看,Harvest 既昂贵又难以使用。分支和合并是一场噩梦。所以我们正在考虑改用 Mercurial。Mercurial 似乎在这些领域表现出色。然而,Mercurial 似乎并没有用于跟踪更改或管理上述过程,它只做 SCM。
问:在发布过程中,我们有哪些选择,肯定还有其他 SaaS 公司(例如 Google、Flickr、Facebook、LinkedIn)希望在将代码发布到生产服务器之前进行质量控制?
问:尝试在 Mercurial 中构建流程是一个坏主意,还是我们需要与 Mercurial 一起使用其他工具?
[编辑] 澄清一下,这是我们的(建议的)分支结构。
这是我们目前在 Harvest 中的流程:
Hotfix <--> Test Level 1 <--> Test Level 2 <--> Master (Production)
Feature <--> Test <--> Release Test <--> Master (Production)
我不是在寻找错误跟踪器,而是一个部署工具,可以帮助我们跟踪和部署经过测试人员验证的代码(发布分支中的代码)。如果同时处理多个修补程序,我们需要能够一起测试它们,如果有一个破坏了代码,我们需要能够将破坏代码的更改“降级”到流程中的一个步骤。今天,两个开发人员将他们的更改“提升”到测试级别 1 就足够了,并且可以同时使用这两个更改对系统进行测试。如果一个开发人员的更改只有在与其他开发人员的代码一起发生时才破坏任何内容,则可以轻松地将其从测试级别 1 降级。