本地/开发/实时部署 - 最佳工作流程

时间:2010-04-28 09:44:33

标签: php mysql deployment live

情况

我们的小公司有3个人,每个人都有一个localhost网络服务器,大多数项目(以前和当前)都在一个PC网络共享磁盘上。我们有虚拟服务器,我们的一些客户的网站和我们的网站。

我们的标准工作流程是:

Coder PC → Programmer localhost → dev domain (client.company.com) 
                                        ↓
                                  live version (client.com)

经常发生的情况是,有两三个人同时在同一个项目上工作 - 一个在开发版上,两个在localhost上。

完成后,我们尝试同步dev版本的文件,理想情况下不要将 mess 感谢ILMV :] )同步到任何文件,**敲敲* *经常不会发生。

然后我们其中一个人在实时网络服务器上部署开发版。

问题

我们正在寻找一种在更新网站时简化此工作流程的方法 - 理想情况下可能是某种差异上传器或VCS(Git / SVN / VCS / ...),但我们并不完全确定从哪里开始或以何种方式这将是理想的,因此我问你,stackoverflowers的同伴你的网站/应用程序部署和推荐工作流程的经验。

我们可能还需要在处理中使用Mac,所以如果它不会成为问题,那就更好了。

谢谢

编辑:其中一个关键部分是在任何工作更新后将网站从开发转移到实时。 编辑:如果没有其他人出现,我会检查MaxVt的答案:)

1 个答案:

答案 0 :(得分:7)

这是一个涉及的问题,但通常需要做出三项重大改进,以改善您的流程。

使用版本控制

如果项目在共享磁盘上,我假设只有一个文件夹,其中包含每个项目的当前状态。开发人员很容易覆盖彼此的更改,没有历史记录,您无法确定项目是否处于一致状态或当前是否已损坏。

选择版本系统并开始使用它。重要的是哪一个(免费的 - SVN是好的,更“集中”,git或mercurial是伟大的,并允许更大的灵活性),但更重要的是任何变化,无论多小,总是通过版本控制。

简化宣传,部署和回滚

现在可能需要执行一系列步骤从localhost迁移到dev,从dev迁移到生产 - 同步文件,将数据库恢复到已知状态,配置服务器特定设置......可能有文档描述需要做什么,或者可能是部落知识。您的目标应该是开始简化和自动化,实现单个命令或脚本,以完成将服务器(本地,开发或生产)同步到源代码管理中项目修订所需的所有工作。

通过自动部署,您可以确保所有必要的操作都按正确顺序完成,即使所有文件都正确但某些配置或命令未运行,您也不会在部署中出现错误,从而破坏站点。

介绍测试

您如何知道您刚刚部署的修订版不仅编译正确,而且按预期工作?对于每个非平凡的项目,您应该进行测试以验证最重要的功能(登录,添加内容,生成报告等),以确保开发人员所做的更改使网站正常运行。

有专门用于测试网络应用的测试框架(Selenium)。研究它们并应用它们。理想情况下,此测试套件将作为单线程部署脚本的一部分运行。


一旦完成了这些工作,您就可以获得有序,可预测且有弹性的开发流程。您的客户和开发人员将感谢您:)