Answers:
简而言之:
推送过程本身应该是全自动的。无论您有一些自定义脚本,还是只是简单地从“受祝福的”存储库中拉到生产环境。那取决于你。您应该只具有自动化的功能,因为可以使自动化过程可靠(与手动上传文件等相反)。
但是,推送过程应手动触发。您推送更新,一旦感到有信心,便将其标记为候选发布版本并将其拉入测试环境(理想情况下,该环境应尽可能类似于您的生产环境)。一旦测试了RC,就可以启动推送。
到今天为止,人类测试人员无法提供给您。
从反馈环路相对较大的意义上来说,这听起来有点慢。但是对于适当的测试,重要的是要拍摄固定的快照,然后将快照检查24-48小时(或更长,具体取决于项目的大小)。相反的情况是,您在推送后立即发现许多错误,并尝试使用一些引入新错误的快速修复程序对其进行修补。
与具有未知错误(严重性未知)的发行版相比,发布具有已知错误(严重性可接受)的发行版更好。
根据您使用的平台,有很多工具可能对您有意义,可以用来自动化生产版本。我在.NET商店工作,所以我们一直在使用NAnt(尽管如今MSBuild是更好的选择)。Java有Ant,可能还有其他东西。Ruby具有Rake之类的东西。然后有像TeamCity和Hudson这样的连续集成平台,它们也可以用于管理版本。
我从未见过或听说过将prod代码直接放在单独的源代码控制存储库中,但是肯定可以。就像back2dos所说的那样,关键是要自动化。我们的构建脚本旨在从源代码管理中签出,构建并推送到暂存环境进行测试。然后,当我们喜欢暂存的工作方式时,脚本将从QA复制到Prod。
我的建议是查看那里的工具并选择其中一种,然后设计一个适合所选工具的过程。不要试图过度发明轮子-这是一个非常解决的问题。