浅谈Git在Web部署上的运用

Git是个好东西自不用说,对比SVN来,它有以下好处:

  1. 分支操作速度快,便于制定开发流程
  2. 每个节点都是完整的代码库,可以不受中心版本库的制约
  3. 使用开源类库框架一样可以随心所欲修改并且进行版本管理

做Web开发的时候,我一直想用Git进行部署。因为之前要么FTP,要么直接在服务器上修改,都会产生各种问题。最近尝试了下,发现还挺简单,记录下来。

明确几个概念

对于分支管理,我青睐“主干+开发”的策略,即一个master分支,保留可稳定运行的代码;开发和debug的时候,建立features和bugs分支,开发完测试完就合并到master。用户可以即时看到产品的演进,就不需要为大版本发布留分支了。从硬件架构来说,有如下几大块

  • 开发机,我的电脑,mac/pc/笔记本,都配好环境,基本和生产机保持一致
  • 测试机,用于测试各种功能、除错的服务器,配置也要和生产机保持一致
  • 生产机,真正用来跑产品的服务器
  • 代码库,用来存放所有产品代码的Git库

其中,开发机、测试机都有完整的分支,因为我们要开发产品,必然涉及分支管理;测试机更是需要能够在几个不同的分支之间切换,甚至能够支持标签化访问分支。而生产机则只保留master分支,也就是最稳定的分支,我们只需要操作它pull新的代码,或者做回滚动作即可。

大体步骤

  1. 接到需求,在开发机上建立分支“fea+问题号”或者“bug+问题号”
  2. 在专有分支进行开发、测试
  3. 每天推送新代码到统一的版本库
  4. 测试机将分支拉过来,进行测试(亦可在代码库添加hook,自动推送)
  5. 测试通过,合并分支到master
  6. 由统一的负责人确定上线时间,登录生产机pull master,完成代码部署
  7. 如果有问题,可以回滚到任何一个版本号

优点和适用范围

这样做,有不少优点:

  1. 保证代码的一致性
  2. 出了问题可以快速回滚
  3. 差异化部署,降低不必要的消耗
  4. 测试的时候,可以快速在不同分支间切换
  5. 所有代码都经过版本管理
  6. 可以通过先fetch再merge的方式,完成版本的快速切换

不过相应的,这种策略只适用于PHP这种部署在服务器端,且不需要编译的语言。另外,图片等二进制素材,也不合适用Git来管理;数据库设置与表结构,也会成为回滚的一个障碍。

不过,毕竟是第一次尝试这样的部署策略,以后再试着总结一些进阶的经验吧,比如:

  1. crontab等计划任务
  2. 二进制素材管理
  3. 数据库表结构管理
  4. 直接访问某个分支

如果您觉得文章内容对您有用,不妨支持我创作更多有价值的分享:


已发布

分类

来自

评论

《“浅谈Git在Web部署上的运用”》 有 1 条评论

  1. 名字只不过是一个代号 的头像
    名字只不过是一个代号

    不过相应的,这种策略只适用于PHP这种部署在服务器端,且不需要编译的语言。另外,图片等二进制素材,也不合适用Git来管理;数据库设置与表结构,也会成为回滚的一个障碍。

欢迎吐槽,共同进步

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据