以下是我们当前的php开发解决方案的设置方法:
每个开发人员都在本地计算机上工作。 每个开发人员都将其更改提交到公共SVN服务器(Intranet)。 提交挂钩将更改上载到登台服务器并执行验证任务。 产品准备就绪后,手动通过SFTP将其部署到生产服务器。
注意:大多数 - 如果不是全部 - 我没有SSH访问服务器,只有SFTP。
我可以像登台服务器更新一样自动部署到生产服务器,但此解决方案只能单向工作。如果出现问题,我怎样才能恢复到以前的版本?
如何改进此解决方案?
谢谢,对不起我的英语。
答案 0 :(得分:4)
如果您可以设置生产服务器以通过安全通道访问SVN仓库,例如https with webdav,请尝试以下操作:
在生产服务器上创建一个脚本,允许您输入标记目录和/或修订号/日期并执行svn导出。这样,prod服务器就从svn。
中提取更改现在,如果你有办法安全地调用这个脚本,比如提交脚本。瞧,你有自动化。
最重要的是,您不希望对您未计划的prod服务器执行自动更新。
解决这个问题:
提交脚本应仅在将某些内容提交到“/ path / to / tags / release / dir”时调用prod更新脚本</ p>
确保只有适当的变更控制人员(或当前控制手动生产的人员)才能在仓库中对此目录执行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"
可以通过提交到先前版本目录来实现回滚。但请注意,这不会导致添加的新文件被回滚。
当然,您的里程可能会有所不同;这只是您调查的建议。 如果设置不正确,您应该花时间考虑安全隐患和灾难可能性。
希望这有帮助,即使只是为了让你想到其他解决方案。