git hooks 实现自动部署

我们 需要两个目录

  1. git 服务器仓库目录 例如: /mnt/test.git
  2. web服务器目录 例如: /data/test

Git Hooks

我们使用的是服务端钩子
post-receive,它位于/mnt/test.git/hooks

当我们在本地执行push命令到git服务器的时候,服务器会自动触发post-receive钩子。

配置post-receive

先在 /data/test目录执行git clone /mnt/test.git
post-receive 脚本的内容为

#!/bin/sh
cd /data/test || exit
unset GIT_DIR #还原环境变量
git pull origin master

保存后赋予可执行权限

chmod +x /mnt/test.git/hooks/post-receive

如果不加 unset GIT_DIR #还原环境变量 就会报出 remote: fatal: not git respository:’.’ 错误

修改web服务器根目录的权限

因为执行拉取的时候是git用户所以要把web服务器根目录( /data/test) 的权限设定为git用户

chown -R git:git /data/test

如果没有做上述操作就会报:

cannot open .git/FETCH_HEAD:Permission denied

这样执行 git push 服务器的git仓库会更新,同时服务器上的网站服务器根目录 /data/test也会自动执行git pull 同步本地的推送

Paste_Image.png

完成!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容