git服务器代码更新到本地文件在哪里,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组 如果不设置的话在站点目录下是没有办法更新文件的(会提示没有权限操作)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值