Build process 意外地发布了活的代码。如何防止再次发生?

Build process 意外地发布了活的代码。如何防止再次发生?,build-process,release-management,Build Process,Release Management,我们最近发生了一个事件,一些代码被发布,但并没有按计划发布 很明显,它被检查进了后备箱。我想这很好,因为你想提前登记,经常登记 但是在这个例子中,它不应该在下一个版本中发布 可以采取什么样的检查/策略/流程来避免代码过早发布 在我看来,即使是连续集成和单元测试,这也是一个人工过程问题 --Lee问题显然不在于将代码检查到存储库。这里有两个问题: 1) 任何应该上线的代码都必须有一个特殊的版本标签或分支,或者其他任何东西,这取决于您使用的源代码管理。因此,在开发过程中,代码永远不会与代码混淆 2)

我们最近发生了一个事件,一些代码被发布,但并没有按计划发布

很明显,它被检查进了后备箱。我想这很好,因为你想提前登记,经常登记

但是在这个例子中,它不应该在下一个版本中发布

可以采取什么样的检查/策略/流程来避免代码过早发布

在我看来,即使是连续集成和单元测试,这也是一个人工过程问题


--Lee

问题显然不在于将代码检查到存储库。这里有两个问题:

1) 任何应该上线的代码都必须有一个特殊的版本标签或分支,或者其他任何东西,这取决于您使用的源代码管理。因此,在开发过程中,代码永远不会与代码混淆


2) 到底是谁让未经测试的代码上线的白痴?如果现场发布代码的人认为您的开发代码已准备好生产,则会严重缺乏沟通。

修改您的集成过程

如果“上线”意味着某人正在执行一些批处理脚本,那么如果这种情况再次发生,请不要感到惊讶

也考虑分支。一个常见的例子可能是使用主干进行开发,一个单独的分支用于测试(比如,每周合并一次),以及一个最终分支(来自前面提到的测试分支)用于RTC


在部署到生产环境之前,应该对该分支进行彻底测试。

如果源代码管理软件允许这样做,则应该有不同的分支

在这个场景中,您将有一个人负责将已经满足质量标准的代码从主分支合并到生产分支中


更新:
尽管是特定于产品的,但上提供的指南中有许多指导原则,可应用于具有创建分支能力的其他源代码管理软件。

不要从主干构建到生产—手动将测试的主干代码合并到生产分支中,并从此开始使用。或者正如其他答案所说,在测试过程中使用任何数量的分支和步骤来满足您的需要

此外,花费一天左右时间的代码更改通常应该在单独的功能分支中进行,直到完成为止

什么样的检查/策略/ 可以将流程落实到位,以避免 代码被发布为live 过早地

我要说的是,任何进程都没有将签入主干作为一种习惯性的开发仪式,这意味着除了牛仔编码之外的任何开发模型


让开发人员尽早并经常签入他们的功能分支,并在时机成熟时将它们合并到主干中。

继续讨论分支,这是保持版本处理结构化的方法


我们使用主干作为主分支,当我们在开发周期中达到某一点,不再允许提交更多的特性(仅限于错误修复)时,我们会为该版本分支一个新的分支(而不是通过容易出错的合并),并且该分支在我们构建该版本之前经过了良好的测试。当然,为了让这项功能正常工作,当功能冻结日期临近时,每个程序员都需要保持提交干净。

我们构建了一个与subversion一起工作的发布管理器。 所以我们可以通过发行号(或Bug号)来控制发布的内容,并且我们有控制权,所以我们可以在需要的时候从发布中取出东西。正在查找测试版网站:)

在我看来,即使是连续的 集成和单元测试这是一个 人权程序问题


真的!但是,您应该能够从您的基础架构获得一些支持,以支持流程的人工方面。当你准备发布一个版本时,你应该能够很容易地看到所有的提交,这些提交将是它的一部分,以及所有相关的问题。这是持续集成的报告端。(我想说有(pdf):构建、部署、测试和报告。)

是的。也许会更详细地描述这一点。我是一个分支的支持者,每次发布风格的开发都在主干中完成,然后在发布前一周(或者有足够的时间进行彻底测试),主干被分支,该分支被测试,然后分支被部署。