使用git处理越来越多的服务器端文件部署。这很好,有很多指南可用如何使用git,rsync和其他设置部署工作流程。
但是,我想问一下设置部署回滚的最简洁方法是什么,以便
每次部署时,都会在部署之前记录最新状态(无需手动读取日志以查找提交)
在案例部署中,git命令用于回滚到先前(记录)状态会产生无法预料的后果
问题的范围是Linux服务器,shell脚本和命令行git。
答案 0 :(得分:3)
请注意,此问题没有一般解决方案。我会提出两种解决方案。
首先需要使用 Fabric 并深入思考如何处理整个部署过程。对于我维护的Django站点,我编写了一个结构脚本,在每个git commmit上部署staging。然后,从暂存到生产部署是一个简单的结构命令,它将所有文件复制到一个新文件夹(将版本增加1),例如从production / v55 /到production / v56 /(好吧,它还可以执行备份和运行迁移) )。如果出现任何问题, rollback 命令将恢复备份,并从文件夹生成/ v55启动生产环境。少说话,更多代码:https://github.com/kiberpipa/Intranet/blob/master/fabfile.py
第二种选择需要更多的阅读并且具有更大的学习曲线,但也提供了更清晰的解决方案。由于列宁建议使用具有声明性配置的框架,我建议更进一步,学习具有声明性配置的Linux发行版 - http://nixos.org/。 NixOS内置了分布式软件部署功能(包括回滚功能)以及从您的计算机https://github.com/NixOS/nixops部署内容的工具。另请参阅分布式软件部署的论文,其中还包括您的问题(成为更大问题的一部分):http://www.st.ewi.tudelft.nl/~sander/index.php/phdthesis
答案 1 :(得分:0)
请查看需要Capistrano支持的Chef和ruby/ror。但是很棒的部署工具。 Python的fabric也是一个很棒的工具。