首页 / GIT / 关于git webhook
关于git webhook
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于git webhook,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1554字,纯文字阅读大概需要3分钟。
内容图文
使用git作为代码库管理工具,你如果想实现自动部署,网上一搜就会出现一大把的教程,这里记录一下自己的实现方式。
因为gitlab服务器是独立的一台机器,但是又需要在另一台测试的站点服务器实现自动部署,这里就没法使用git的服务端hooks,所以目光转向webhook。
前提:一个编译程序一直监听文件变化,有变化则编译,所以只需要及时更新到代码即可
首先在测试服务器上安装好git客户端,然后将代码down下来(此处是废话)。
站点使用的是lnmp,所以想着使用php执行shell脚本,然后就用了如下代码
/* webhook.php */ $dir = ‘/www/site‘;//该目录为git检出目录 $handle = popen("cd {$dir} && git pull > debug.log",‘r‘); $read = stream_get_contents($handle); printf($read); pclose($handle);
然后打开该url(在这之前先在自己电脑上提交了代码,不然怎么看效果,呵呵),并查看debug.log,呵呵,并没有日志输出。好吧,难道是代码问题?简单,验证一下就知道了,马上使用root登录使用shell直接运行命令 php webhook.php,再看看日志文件,有输出内容了。。。
OK,那来梳理一下整个过程有什么区别。使用命令行方式使用了root账户,但是使用url的方式则是使用了nginx的账户,两个账户权限是不同的。需要将用户权限提升?好麻烦啊,我不想那么弄。那还能怎么样呢,直接使用root权限运行一个监听程序来执行git pull操作不就好了嘛,那就开动呗。接下来我用了nodejs来处理这个问题,如下
// server.js var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.write("wait ..."); var exec = require(‘child_process‘).exec; var cmdStr = ‘cd /www/site && git pull > debug.log‘; exec(cmdStr, function(err, stdout, stderr) { if (err) { console.log("error"); } else { console.log("success"); } }); response.end(); }).listen(8081);
接下来还是一样,提交代码,然后在root账户下运行node server.js。再来看看debug.log,嗯,已经有了吧。接下来我们把8081端口开放?当然不,我选择了使用nginx代理的方式(就是那么任性,不服来咬我),nginx配置文件里添加如下
location /xxx { proxy_pass http://127.0.0.1:8081; break; }
大功告成,访问一下该url测试一下即可,www.mysite.com/xxx 已经ok了,接下来打开自己的项目管理界面的setting将url放到webhook里面,哦了。
事实证明我果然不适合写文档,感觉自己都看不懂了。。。惭愧
原文:http://www.cnblogs.com/hanyingchun/p/5341324.html
内容总结
以上是互联网集市为您收集整理的关于git webhook全部内容,希望文章能够帮你解决关于git webhook所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。