git服务器实现自动部署代码,本地push后服务器端自动更新
一简介
自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法?
目前我在使用 Git Hook 来部署自己的项目。Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。
二逻辑
按照上面说的,就是要在开发者提交的时候,自动触发脚本,脚本去实现web端代码的部署.这里就得讲一下git的hook机制,当git服务器接到各种事件时触发,这里使用的hook是,post-receive。这个hook在git服务器受到push请求,并且接受完代码提交时触发。
具体代码体现,在git远端仓库的hooks目录下新建post-receive文件:
三代码
#!/bin/sh
#判断是不是远端仓库
IS_BARE=$(git rev-parse --is-bare-repository)
if [ -z "$IS_BARE" ]; then
echo >&2 "fatal: post-receive: IS_NOT_BARE"
exit 1
fi
unset GIT_DIR
DeployPath="/var/web"
echo "==============================================="
cd $DeployPath
echo "deploying the test web"
#git stash
#git pull origin master
git fetch --all
git reset --hard origin/master
time=`date`
echo "web server pull at webserver at time: $time."
echo "================================================"
四权限设置
chmod +x post-receive
五备注
因为我建立git仓库时用的是git用户 但是在自动部署时站点服务器采用的是nginx服务器的 git用户属于git组 nginx属于nginx组 所以在这里就是把post-receive设置成nginx组 如果不设置的话在站点目录下是没有办法更新文件的(会提示没有权限操作)
以上是 git服务器实现自动部署代码,本地push后服务器端自动更新 的全部内容, 来源链接: utcz.com/z/518078.html