git hook实现代码自动部署
2017-04-26 20:18
567 查看
原理与流程
git用户执行git push操作
远程仓库发现有用户执行了push操作,就会执行一个脚本
post-receive(钩子)
在
post-receive脚本中,将git仓库的代码拷贝到web站点目录下
创建git仓库
我们可以在自己的服务器上创建git仓库,有两种方式:git --bare init(裸仓库)
git init
两者区别:
普通git仓库的目录结构就和你的代码目录结构一致,只多了
.git目录,
.git目录中包含了git的一些配置等数据
裸仓库只保存了一些配置信息等,肉眼是找不到我们所上传的代码的
建议使用裸仓库
执行钩子
git仓库和git裸仓库的钩子所在位置不同。git普通仓库钩子在
.git/hooks/中
git裸仓库钩子在
hooks/中
钩子要做的事就是将代码从仓库中拷贝到web目录,有两种方式:
在web目录中,将git仓库的代码克隆过来:
git clone xxxxx,需要部署代码的时候,执行git pull即可将代码同步过来了。
将git仓库中的代码打包,然后解压到web目录下
实现:
第一种方式实现:
在上述hooks目录中,创建
post-receive文件,内容如下
#!/bin/sh DEPLOY_PATH=/home/wwwroot/default/myproject/ unset GIT_DIR #这条命令很重要 cd $DEPLOY_PATH git reset --hard git pull chown www:www -R $DEPLOY_PATH
第二种方式实现:
#!/bin/sh DEPLOY_PATH=/home/wwwroot/default/myproject/ git archive --format zip --output /path/to/file.zip master # 将 master 以zip格式打包到指定文件(裸仓库中执行) mv /path/to/file.zip $DEPLOY_PATH #将打包好的剪切到web目录 unset GIT_DIR cd $DEPLOY_PATH unzip -o file.zip #解压覆盖 rm -rf file.zip #删除 chown www:www -R $DEPLOY_PATH
注意:要给钩子脚本执行的权限
相关文章推荐
- 利用WebHook实现PHP自动部署Git代码
- (git)Bitbucket使用WebHook实现自动部署PHP代码
- 利用WebHook实现PHP自动部署Git代码
- CentOS利用WebHook实现PHP自动部署Git代码
- 使用Git的hook实现代码的自动部署
- git hook实现代码自动部署
- centos 安装git服务器,配置使用证书登录并你用hook实现代码自动部署
- GitHook+JGit实现最新代码的自动克隆或者项目的自动部署
- 使用 Git Hook 实现网站的自动部署
- GIT服务器实现web代码自动部署
- php实现webhook自动部署代码
- git实现代码提交自动部署到相应的web服务器
- Gitlab使用Webhook实现Push代码自动部署
- 搭建内部开发git服务器并使用hook实现自动部署
- 利用WebHook实现Github或Coding代码的自动部署
- Php+WebHook实现项目自动部署 - 关于Git自动部署方案
- git hook远程仓库实现网站的自动部署
- 使用 Git Hook 实现网站的自动部署
- 185 git 使用 Git Hook 实现网站的自动部署
- PHP 结合 WebHook 实现代码自动部署