如何将文件传输到生产环境?


9

我们是一个小组,开始在具有现有代码库的相当大的网站上工作。我们有一个测试和一个生产服务器。

我们的想法是建立一个测试库,其中有许多开发人员可以推送访问;还有一个只有少数人可以推送的有福的存储库。祝福的仓库应该总是稳定的,代表最新的生产版本。

如何自动将文件传输到生产环境?对生产文件进行版本控制是否很糟糕?这样,推送到有福的存储库将意味着部署。但是,当发生合并冲突时会发生什么?生产服务器会在解决之前中断吗?

Answers:


7

简而言之:
推送过程本身应该是全自动的。无论您有一些自定义脚本,还是只是简单地从“受祝福的”存储库中拉到生产环境。那取决于你。您应该只具有自动化的功能,因为可以使自动化过程可靠(与手动上传文件等相反)。

但是,推送过程应手动触发。您推送更新,一旦感到有信心,便将其标记为候选发布版本并将其拉入测试环境(理想情况下,该环境应尽可能类似于您的生产环境)。一旦测试了RC,就可以启动推送。
到今天为止,人类测试人员无法提供给您。

从反馈环路相对较大的意义上来说,这听起来有点慢。但是对于适当的测试,重要的是要拍摄固定的快照,然后将快照检查24-48小时(或更长,具体取决于项目的大小)。相反的情况是,您在推送后立即发现许多错误,并尝试使用一些引入新错误的快速修复程序对其进行修补。
与具有未知错误(严重性未知)的发行版相比,发布具有已知错误(严重性可接受)的发行版更好。


那么在生产服务器上进行回购是可以的吗?当我说自动化时,我的意思是万一生产服务器上没有回购(换句话说,将有测试有福的回购,但没有生产)。当然,人工测试无法实现自动化,这不是我所追求的。
陶Szelei

1
@Tamás:如果您的意思是在服务器上进行本地签出有祝福的仓库可能是可以的(apache(或其他任何不错的网络服务器)可以很容易地使git相关文件从外部无法访问)。但是,您可以轻松地对其进行“导出”。在webroot中没有不属于该文件的文件是没有意义的。
back2dos

ERR -...那么你怎么知道确切严重程度未知的未知的错误是什么,如果他们... 不知
Spoike 2011年

@Spoike我认为back2dos只是使用没有未经测试的“快速n脏”修复的固定版本来全面倡导测试。
马克斯

@Spoike:在24-48小时内,您可以将许多未知的错误变成已知的错误。同样在5分钟内,您可以将一个已知错误变成许多未知错误。这称为快速修复。
back2dos

2

通过了解Capistrano的运作方式,我学到了很多有关部署的知识。当时我正在与RoR一起工作,因此这是一个合理的选择,尽管我从来没有完全按照我正在从事的项目工作,但它执行自动更新的方式非常有用。

您可能处于甚至可以直接使用它的情况-它不一定与Rails绑定-但是,如果没有,它的行为方式肯定会有所帮助。


1

根据您使用的平台,有很多工具可能对您有意义,可以用来自动化生产版本。我在.NET商店工作,所以我们一直在使用NAnt(尽管如今MSBuild是更好的选择)。Java有Ant,可能还有其他东西。Ruby具有Rake之类的东西。然后有像TeamCity和Hudson这样的连续集成平台,它们也可以用于管理版本。

我从未见过或听说过将prod代码直接放在单独的源代码控制存储库中,但是肯定可以。就像back2dos所说的那样,关键是要自动化。我们的构建脚本旨在从源代码管理中签出,构建并推送到暂存环境进行测试。然后,当我们喜欢暂存的工作方式时,脚本将从QA复制到Prod。

我的建议是查看那里的工具并选择其中一种,然后设计一个适合所选工具的过程。不要试图过度发明轮子-这是一个非常解决的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.