php利用github的webhook实现自动部署

本文共有1556个字。 # github , 自动部署/ a

部署的时候总是需要将代码Git push到GitHub后再去服务器Git pull 实在太麻烦了,所以就在网上找了相关的教程,自己折腾了一下,特记录下折腾过程。

PHP代码实现

1、代码实现-hook.php

error_reporting(7);
date_default_timezone_set('UTC');
define("WWW_ROOT", "/home/wwwroot/default/");
define("LOG_FILE", "/home/wwwlogs/git-hook.log");
$shell = sprintf("cd %s && /usr/bin/git pull 2>&1", WWW_ROOT);
$output = shell_exec($shell);
$log = sprintf("[%s] %s \n", date('Y-m-d H:i:s', time()),"SHELL:" . $shell . "----- ERROR:" .$output);
echo $log;
file_put_contents(LOG_FILE, $log, FILE_APPEND);

2、将hook.php部署到网站目录

WEB服务器设置

1、将www加入git权限

sudo vim /etc/sudoers
#在里面最后位置加入
git ALL = (www) /usr/bin/git pull

2、在网站目录先clone一下。

cd /home/wwwroot/default
git clone https://xxx.git "/home/wwwroot/default"
如果现有目录不为空的话,按照下面操作
cd /home/wwwroot/default
git clone https://xxx.git
mv xxx/.git .   #将clone目录下面的.git移动到当前目录
rmdir xxx
git reset --hard HEAD

3、将WEB目录授权

sudo chown -R www:www /home/wwwroot/default

GitHub 设置

1、添加hook
项目 -> Setting -> Webhooks -> Add webhook
- payload Url 服务器hook.php的url地址,例如:http://xxx.com/hook.php
- Content type 选择 application/x-www-form-urlencoded
- Which events would you like to trigger this webhook? 选择 Just the push event.
- Active 打钩选择
点击 add webhook即可

到这里整个部署安装完成!

版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。本站微信公众号:7TEC,敬请关注!

暂时无法评论哦~

暂无评论