基于Git的网站自动发布流程浅析

———— 以下都是我个人根据自己工作方式的猜想,有可能是错的。 ————

一、简述

  1. 一个远程的Git代码仓库(用于管理提交的代码);
  2. 发布人员登录发布机子,然后从这个Git代码仓库上pull下最新的代码;
  3. 通过一个自动打包发布的脚本,rsyncrcp or scp ?)到一个分发服务器,然后由这个分发服务器转发给所有的服务器。

二、发布脚本浅析

在上面的这些过程中,最重要的环节莫过于这个自动打包发布的脚本了。

基本过程大概如下:

  1. 比较一下从git仓库pull下来的代码,和之前的代码区别,主要是比较有哪些文件改动过, 如通过一个命令:git diff commitid –name-only, commitid指代的是上次pull后的commit id,也就是之前没有pull前的版本号。
  2. 获取到改动的文件后,遍历每一个改动的文件,并分类。如css文件,js文件,html文件。
  3. 对不同的分类文件,分别做相关处理。如css文件,对应的加一个最新的版本号(一般使用的是md5),然后对应的修改所有引用到它的文件,这块也是最复杂的一部分,根据不同的网站,需要不一样的处理逻辑。
  4. 存储当前的版本号,如:git log –pretty -1 | awk ‘/^commit/{print $2}’。
  5. 将所有改动的文件进行打包,发布到分发服务器。

三、后话

给我你的看法吧~

四、本文完全转载自

http://blog.csdn.net/do_it__/article/details/7836481