玩转git之webhook应用初探

1.通过gitlab的webhook来进行测试项目的自动部署;
2.php程序以www用户来执行,当执行exec("sh update.sh")时,update.sh脚本也是以www用户执行的
注:exec("sh update.sh >& error.log");可以将文件重定向到error.log文件中
3.结果发现,之前设置的ssh密钥是以root用户来设置的,php以www用户执行脚本中的git pull 命令时就没有权限
4.通过设置www下的ssh密钥, sudo -u www ssh-keygen ...  以www用户执行生成密钥的操作
5.gitlab的deploy keys 可以设置ssh密钥只能针对指定的项目,所以,针对项目的,我们将rsa.pub贴到指定项目的deploy keys中去,而针对用户的,我们将ssh密钥贴到gitlab的用户信息的ssh keys中去;

======================================================================


在百度搜索了一下 git webhook 这个关键字,没有看到有相关的详细的应用教程。

所以决定把 自己这段时间以来的摸索 写成文字 分享给大家 。

最近碰到这样的一个需求,就是 本地提交代码 到 git仓库以后 需要 网站 远程自动同步代码 。

git 的 webhook  正好能 满足 这个需求。

 

git

具体步骤:

服务器端:

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
保存 

完全以上配置 。服务器端自动同步代码的功能就能够实现了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值