社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
在百度搜索了一下 git webhook 这个关键字,没有看到有相关的详细的应用教程。
所以决定把 自己这段时间以来的摸索 写成文字 分享给大家 。
最近碰到这样的一个需求,就是 本地提交代码 到 git仓库以后 需要 网站 远程自动同步代码 。
git 的 webhook 正好能 满足 这个需求。
具体步骤:
服务器端:
1. 服务器端 生成 apache 的 deploy key
sudo -u apache ssh-keygen -t rsa -C “jianl@example.com”
2.给apache 操作目录的权限
第一种方法 直接给 目录 777 权限 简单粗暴
第二种方法 建立用户组 把 ftp用户 和 apache 添加到该组别里面 , 给予该组权限
groupadd gitwriters adduser [yourusername] gitwriters
adduser apache gitwriters
chgrp -R gitwriters /path/to/your/repo
chmod -R g+rw /path/to/your/repo
3.在需要自动同步的仓库打开hook
cd /项目/.git/ cp hooks/post-receive.sample hooks/post-receive vim hooks/post-receive #加入下面代码 GIT_WORK_TREE=/home/www git checkout -f
4.加入接收 webhook的 脚本, 在项目 创建 update.php
$www_folder = "/2T/ftp/utools/uilib" ; //git仓库地址 $git_repo = "git@git.dev/.......abc.git" ; //执行指令 echo shell_exec(" cd $www_folder && git pull $git_repo 2>&1 ");
gitlab 端的设置:
找到项目的设置 ,
deploy key项 添加 直接 apache用户 生成的 ssh key
webhook 项 添加 网站地址/update.php (正常能够访问的链接) , 勾选 Push events
保存
完全以上配置 。服务器端自动同步代码的功能就能够实现了。
本文作者:l, jian 转载请注明来自:携程UED
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!