用Git-Hooks进行自动部署,让提交发布自动化

之前了解的自动化部署都是jekins这样集成化的成熟的工具。最近因为有朋友提交代码时,不想登陆服务器拉取代码,才了解到 git hooks。看来还是git使用不到位。之前一直都是本地开发并提交代码,测试时,人工登陆测试服务器去拉取最新代码。

网上资料还是比较多的,最后在本机测试是成功了的。

主要选要明白几个关键点:

  • git init –bare
  • post-receive 文件
  • SSH 认证

这几个都比较容易找到资料。

git init –bare

git init 不一样的是,git init --bare并不存储实际代码,仓库文件夹不会看到任何项目代码,反而生成了一些 .git之外的文件夹,其中 hooks文件夹就是存放git命令操作后需要执行的脚本。 需要新建两个文件夹,一个执行git init --bare作为远端仓库,一个执行git init作为服务器项目目录。 本地开发目录和服务器项目目录的remote都要指向 服务器的远端仓库。

post-receive 文件

post-receive 文件是git push 之后,执行的脚本文件,自动部署的脚本代码就写在这里。 如:

#!/bin/sh
unset GIT_DIR
echo "远程开始更新"
NowPath=`pwd`
echo $NowPath
DeployPath="../deploy"

cd $DeployPath
git pull origin master
echo "远程更新完毕"
cd $NowPath
exit 0

这里有一点比较容易出问题的就是路径,最好还是使用绝对路径。 脚本里还可以加入任何想执行的脚本,比如打包编译。

不过要注意使用 chmod +x post-receive 改变一下权限,服务器端的配置就基本完成了。

SSH认证

这个在 mac os x 和 linux都没有问题,我用别人的windows配置的时候经常都会出现认证失败,就算认证成功了,也无法执行脚本,对这个还是不太熟悉。我猜可能是 cmd 的问题,ssh 登陆后还遇到过乱码。

这些都配置好之后,本地开发只需要提交代码,服务器就可以预览最新代码了。

0%