为什么不直接从git或bzr存储库部署代码?

为什么不直接从git或bzr存储库部署代码?,git,web-applications,deployment,dvcs,bazaar,Git,Web Applications,Deployment,Dvcs,Bazaar,在web应用程序的开发/测试设置中,当使用dvcs(bzr,git)时,为什么从存储库目录实际运行应用程序是错误的 我遇到的所有团队都有一个单独的部署脚本,可以将存储库签出导出到另一个目录或服务器,但我真的不明白为什么,我害怕让“成年人”看起来不“愚蠢”。。。我的意思是,它毕竟是一个开发服务器,而不是生产服务器,所以…?您是否希望查看路径和权限接近实际的运行时,以便任何错误都可能反映现实情况,或者您是否愿意花时间来处理一些奇怪的问题,这些问题将解决非标准部署特性?你知道,像 您是本地管理员,所

在web应用程序的开发/测试设置中,当使用dvcs(bzr,git)时,为什么从存储库目录实际运行应用程序是错误的


我遇到的所有团队都有一个单独的部署脚本,可以将存储库签出导出到另一个目录或服务器,但我真的不明白为什么,我害怕让“成年人”看起来不“愚蠢”。。。我的意思是,它毕竟是一个开发服务器,而不是生产服务器,所以…?

您是否希望查看路径和权限接近实际的运行时,以便任何错误都可能反映现实情况,或者您是否愿意花时间来处理一些奇怪的问题,这些问题将解决非标准部署特性?你知道,像

  • 您是本地管理员,所以所有资源都对您可用,但是 在用户帐户不是管理员的地方部署了一些东西,但是 失败
  • 在本地解析良好但在部署的 装置
  • 这是一个新事物,它没有成为 [你的|其他人的]登记,所以“它在我的机器上工作!”(tm)
或者是其他一些事情中的任何一种,这些事情会减慢速度,但对交付高质量的代码没有帮助


tl;dr:what@Schwern在下面说了什么。

您是希望看到路径和权限接近实际的运行时,这样任何错误都可能反映现实情况,还是希望花时间研究解决非标准部署特性的奇怪问题?你知道,像

  • 您是本地管理员,所以所有资源都对您可用,但是 在用户帐户不是管理员的地方部署了一些东西,但是 失败
  • 在本地解析良好但在部署的 装置
  • 这是一个新事物,它没有成为 [你的|其他人的]登记,所以“它在我的机器上工作!”(tm)
或者是其他一些事情中的任何一种,这些事情会减慢速度,但对交付高质量的代码没有帮助


tl;dr:what@Schwern在下面说了些什么。

要澄清的是,问题其实并不在于如何部署,而是一个完全不同的问题。更深层次的原则是,您的测试环境应该尽可能接近生产环境,因为@DaveE提到的原因是:微小的部署差异可能会使您的测试毫无用处

听起来您真的认为镜像生产安装对于开发时的测试来说太多了。有两种解决方案。使您的测试环境不同于生产环境并不是其中之一

首先,使生产安装更容易。这可能会将手动过程(在此处复制文件、运行这些脚本、更改这些权限…)转变为自动过程。或者它实际上可以减少部署的功能。不知道细节就不能多说了

如果您没有测试环境,那么您的开发环境将成为您的测试环境,并且在生产之前必须遵守更严格的规则,即成为您的唯一防线。为了避免这种情况,请创建一个要在其上进行测试的临时服务器。暂存服务器是一个尽可能多地镜像生产的服务器。开发拷贝首先安装在临时服务器上,并在推送到生产环境之前进行测试。这将为您提供一个两阶段的测试系统。您可以在不太精确的开发环境中进行一些测试,而完整的测试是在登台环境中完成的。完整的测试套件不必一直运行,因此不必不断更新登台服务器。YMMV。然后,您可以在开发环境上节省开支,以加快开发速度,同时仍然知道在生产之前,所有内容都将在完整安装上进行测试

如果您有足够的资源,登台服务器是生产中所有硬件和软件的完美镜像。您可能没有,所以它可以是一个虚拟机或只是一个子目录。如果您没有团队其他成员的支持,这两种方法都可以在您的开发机器上使用

自动化安装过程,再加上一个临时服务器,意味着您可以开始这样做。这是一个奇特的术语,用于“在每次提交时自动在测试服务器上运行测试”。连续集成系统的一个例子是。那么不管你的部署有多复杂,你的机器人都会帮你处理

因此,虽然一开始可能看起来有很多繁琐的工作,但最终所有的工作都集中在一起,允许您甚至不用按下按钮就可以进行测试


最终,您的新代码必须在与生产环境尽可能相似的环境中进行测试,然后才能进行实时推送。实现这一点的方法有很多,但这是一条坚如磐石的规则。

澄清一下,问题其实并不在于如何部署,而是另一个问题。更深层次的原则是,您的测试环境应该尽可能接近生产环境,因为@DaveE提到的原因是:微小的部署差异可能会使您的测试毫无用处

听起来您真的认为镜像生产安装对于开发时的测试来说太多了。有两种解决方案。使您的测试环境不同于生产环境并不是其中之一

首先,使生产安装更容易。这可能会将手动过程(在此处复制文件、运行这些脚本、更改这些权限…)转变为自动过程。或者它实际上可以减少部署的功能。不知道细节就不能多说了

如果您没有测试环境,那么您的开发环境将成为您的测试环境,并且在生产之前必须遵守更严格的规则,即成为您的唯一防线。为了避免这种情况,请创建一个要在其上进行测试的临时服务器。暂存服务器是一个尽可能多地镜像生产的服务器。开发副本安装在st上