玩转git之webhook应用初探

转载 2015年11月17日 15:38:14

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

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

git webhook 代码自动部署

echo exec("cd /data/airenwen/ && /usr/local/git/bin/git pull");
  • kongdeqian1988
  • kongdeqian1988
  • 2016年09月08日 15:50
  • 1013

git码云配置web hook钩子实现自动部署,git权限等问题,LAMP

在lamp使用git web hook 心得。 利用web hook 实现代码在服务器自动部署和所遇到的没有权限等问题。...
  • yufan_xiaowu
  • yufan_xiaowu
  • 2016年09月12日 15:17
  • 8092

【Webhooks】使用Git的Webhooks进行服务器自动部署代码

通过callback的方式,我们可以通过自己的方式和思路实现项目监控统计,以及**自动化部署项目**的目的. 在这次学习的过程中,顺便了解了ngrok,sinatrarb以及Ruby. 语言并不是...
  • diandianxiyu
  • diandianxiyu
  • 2016年05月13日 15:39
  • 18368

利用WebHook实现Github或Coding代码的自动部署

这个问题也是出于自己遇到的不便,平时都是把代码托管到GitHub或者Coding,一方面是为了方便代码管理,再就是能更好的存储代码。但是最近会遇到这样的一个问题本地代码提交Git之后,还要去服务器执行...
  • zmzwll1314
  • zmzwll1314
  • 2017年08月29日 15:06
  • 1071

Jenkins+git+webhook自动触发部署和测试任务

需求: 目前上线前会将需要上线的代码push到release分支,然后由人工填写参数点击触发jenkins上的任务。希望这个过程能完成自动化,只要有人往release上推代码,就自动跑部署r...
  • qq_34618853
  • qq_34618853
  • 2017年04月13日 16:37
  • 1735

git的webhook设置

以下是coding.net对webhook的解释: 本文实现的功能是通过webhook实现远程git仓库的自动更新。实现原理:webhook的主要设置是一个接收url和一个验证token。 每...
  • alexander_phper
  • alexander_phper
  • 2016年03月10日 09:36
  • 3451

在git.oschina上使用WebHook自动部署

首先创建密钥对,用于连接oschina ssh-keygen 选择存放位置,输入密码 密钥对生成完成 将web目录改为apache用户所有。 sudo -u apache ssh-keyg...
  • DCD
  • DCD
  • 2015年12月15日 15:07
  • 2706

什么是webhook

Webhook是一个API概念,并且变得越来越流行。我们能用事件描述的事物越多,webhook的作用范围也就越大。Webhook作为一个轻量的事件处理应用,正变得越来越有用。 准确的说webhoo是...
  • vcwanglailing
  • vcwanglailing
  • 2017年09月02日 17:11
  • 1072

钩子(hooks)—webhook-使用钩子自动触发部署

钩子(hooks)—webhook 什么是webhook? wehook A webhook is an API concept that's growing(激发) in popularity. A...
  • iiiiher
  • iiiiher
  • 2017年04月20日 10:46
  • 2892

什么是webhook

什么是webhook 翻译,原文地址:https://sendgrid.com/blog/webhook-vs-api-whats-difference/ 一、概述 Webhook是...
  • yan_wj
  • yan_wj
  • 2018年01月02日 10:12
  • 35
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:玩转git之webhook应用初探
举报原因:
原因补充:

(最多只允许输入30个字)