
将代码从开发环境部署或更新到实时生产环境的最佳方法是什么?
我习惯于首先使用旧的 filezila;删除然后将新代码上传到生产服务器,但这会带来各种问题,其中最主要的就是停机。
我也一直在考虑使用 Mercurial 或 git 等 VCS。这是推送实时代码的最佳方法吗?
感谢您的见解。
答案1
使用像 mercurial、git 或 bzr 这样的分布式 VCS 是一个好主意。
您可以拥有单独的生产分支(或者在定制的情况下,甚至可以为特定客户设立一个分支)。
我看到的好处:
- 轻松推动修复
- 如果需要的话很容易恢复
- 变化历史
- 如果有人修复了生产环境,你会看到
答案2
无论你的开发生态系统(Rails、Java)或 VCS(GIT、SVN)如何,将代码部署到任何环境的最关键方面是持续集成。
这里有一些要考虑的事情:
- 维护源存储库。很明显。我在一家 Java 商店工作,我们使用 SVN。无论你使用什么 VCS,重要的是能够标签/版本您的代码,以确保部署正确的跨环境编写代码。请记住,您不是从开发部署到生产,而是将代码从源代码控制拉到构建机器,然后为每个环境构建一个特定的包。
- 使构建过程自动化。我们将应用程序部署为 WAR 文件,并使用 Ant 创建部署包。
- 在构建期间执行单元测试。如果单元测试失败,中止部署非常重要。
- 使用持续集成服务器。我们使用 Hudson 并取得了巨大成功。这不仅让我们能够一键部署到所有环境(DEV、SIT、UAT、PROD),还能安排全天的构建和部署,以确保整个交付过程顺利进行。
根据您的生产环境,实现这一点可能相当简单或相当复杂。以下是一些可帮助您入门的资源:
这两种资源都应该能给你足够的想法来创建你自己的流程。
答案3
我们使用与 Webistrano 结合的 Git 存储库。
Git 允许开发人员以分散的方式管理他们的代码,并具有 VCS 的所有优点。
Webistrano 允许开发人员或相关管理人员通过单击 Web 界面将代码推送到开发平台,然后再推送到生产平台。它是专为 RoR 环境设计的工具,但只需进行少量自定义即可在任何环境中使用。Webistrano 的另一个优点是,如果部署失败,它可以轻松回滚,这是一个非常好的功能。
作为一名系统管理员,我再也离不开 webistrano 了。有了它,我就不用担心开发人员(或系统管理员!)在部署期间对生产服务器做出愚蠢的事情了。它是自动化的,而且很简单。另一个很大的优势是,开发人员不需要系统管理员以干净的方式推送代码,他们只需点击一下即可。
有关 Webistrano 的更多信息:这里。