2

以下是我们当前的 php 开发解决方案的设置方式:

每个开发人员都在他们的本地机器上工作。每个开发人员都将他们的更改提交到一个通用的 SVN 服务器(内联网)。提交挂钩将更改上传到登台服务器并执行验证任务。产品准备好后,通过 SFTP手动将其部署到生产服务器。

注意:大多数(如果不是全部)我没有 SSH 访问服务器的权限,只有 SFTP。

我可以以与更新登台服务器相同的方式自动部署到生产服务器,但此解决方案仅适用于单向。如果出现问题,如何恢复到以前的版本?

我该如何改进这个解决方案?

谢谢和对不起我的英语。

4

1 回答 1

4

如果您可以设置生产服务器以通过安全通道访问 SVN 存储库,例如带有 webdav 的 https,则可以尝试以下操作:

在生产服务器上创建一个脚本,允许您输入标签目录和/或修订号/日期并执行 svn 导出。这样,prod 服务器就会从 svn 中提取更改。

现在,如果你有办法安全地调用这个脚本,比如说提交脚本。瞧,你有自动化。

最重要的是,您不希望对您未计划的 prod 服务器执行自动更新。

要解决这个问题:

提交脚本应仅在将某些内容提交到“/path/to/tags/release/dir”时调用 prod 更新脚本

确保只有适当的变更控制人员(或当前控制手动生产部署的人员)才能在 repo 中执行 svn 复制到此目录。

例如,假设您的回购设置为:

/yourWebsite
--> /branches
--> /trunk
--> /tags
----> /releases

触发自动部署到 prod 的提交将类似于:

svn copy https://mySvnRepo/yourWebSite/trunk \
   https://mySvnRepo/yourWebSite/tags/releases/x.y \
   -m "Tagging for production deployment"

回滚可以通过提交到以前的版本目录来实现。但是请注意,这不会导致添加的新文件回滚。

当然,您的里程可能会有所不同;这只是对您的调查的建议。如果设置不正确,您应该花时间考虑安全隐患和潜在的灾难。

希望这会有所帮助,即使只是为了让您考虑其他解决方案。

于 2009-11-10T01:14:22.160 回答