linux - Git 部署回滚工作流程

标签 linux git shell deployment

越来越多的服务器端文件部署是使用 git 处理的。这很好,并且有很多指南可以帮助您如何使用 git、rsync 等设置部署工作流程。

但是,我想问一下设置部署回滚的最简洁方法是什么

  • 每次部署时,都会记录部署前的最新状态(无需手动读取日志来查找提交)

  • 在部署出现不可预见后果的情况下,使用哪些 git 命令回滚到先前(记录的)状态

问题的范围是 Linux 服务器、shell 脚本和命令行 git。

最佳答案

请注意,此问题没有通用的解决方案。我会提出两种解决方案。

第一个需要使用Fabric并深入思考如何处理整个部署过程。对于我维护的 Django 站点,我编写了一个结构脚本,该脚本在每次 git 提交上部署暂存。从登台部署到生产是一个简单的结构命令,它将所有文件复制到一个新文件夹(版本增加 1),例如从生产/v55/到生产/v56/(好吧,它还进行备份并运行迁移)。如果出现任何问题,rollback 命令会恢复备份,并从文件夹 production/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

关于linux - Git 部署回滚工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17007933/

相关文章:

java - Spring Boot + AWS Linux + Oracle 数据库

windows - PowerShell 从 GitHub API 下载 Zip 文件

尽管 set-upstream-to 和 push.default,Git 仍推送 HEAD -> master

c# - 进程需要按 <enter> 才能继续。可以使用 Mono GTK# 吗?

linux - Bash 脚本,仅在以前未下载文件时才从 FTP 下载文件

linux - 我想循环浏览选项卡完整结果

linux - 找不到相关命令

c++ - 将代码从 git 导入到 Linux ide,例如科开发

bash - 如何仅检查自上次 checkin bash以来添加的行

在 Linux for Mac 上交叉编译简单的标准 C 程序