我们目前的建造过程
我们是一个小型开发团队(2 到 4 人,具体取决于项目),他们目前使用 Phing 在上线之前将代码部署到暂存环境。我们将代码保存在 SVN 存储库中,主干保存当前的活动开发,并且在某些时候,我们会创建我们测试的分支,然后(如果成功)标记并导出到暂存环境。如果那里一切顺利,我们最终将它们部署在生产服务器中。动作是高度自动化的,但总是由人工干预触发。
疑点
我们现在想在流程中引入持续集成(与 Hudson 一起);不幸的是,我们对活动同步有一些疑问,因为我们担心 CI 会在某种程度上干扰我们的构建过程并导致某些问题。
考虑到自动化 CI 循环具有一定频率的自动执行操作,我们看到两种可能的“集成”情况,每种情况都有其自身的问题:
案例 A:每个 CI 循环都会产生一个具有自己名称的新分支;我们确实使用这样的名称来手动(通过现在发生的 phing)将代码从 SVN 导出到暂存环境。我在这里看到的问题是(除非采取了特定的对策 - 删除 IE)我们拥有的分支数量很容易失控(假设我们经常提交,这样我们每 N 分钟就有一个新的构建/分支) .
案例 B:每个 CI 循环都会创建一个名为“current”的新分支,然后仅当我们手动决定将其导出到 staging 时才使用唯一名称对其进行标记;无论如何,只要下一个 CI 周期开始,当前分支就会被删除。我们在这里看到的问题是,当有人将“当前”分支标记/导出到暂存时,可能会启动一个新周期,从而创建不一致的构建(但也许在这里我太悲观了,因为我承认我不知道SVN 是否提供了一些针对此的内置保护)。
说了这么多,我想知道是否有类似经历的人可以这么好心地给我们一些关于这个主题的提示,因为上面描述的方法都没有让我们完全满意。
有没有什么重要的事情我们在整体上完全忽略了?感谢您的关注和(提前)您的帮助!