首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >git服务器实现自动部署代码,本地push后服务器端自动更新

git服务器实现自动部署代码,本地push后服务器端自动更新

作者头像
sinnoo
发布2020-11-13 15:59:25
发布2020-11-13 15:59:25
3.8K0
举报
文章被收录于专栏:技术人生技术人生
一简介

自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,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文件:

三代码
代码语言:javascript
复制
#!/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组 如果不设置的话在站点目录下是没有办法更新文件的(会提示没有权限操作)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一简介
  • 二逻辑
  • 三代码
  • 四权限设置
  • 五备注
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档