登录  /  注册
首页 > php框架 > ThinkPHP > 正文

关于web hooks服务器自动拉取代码php thinkphp6

藏色散人
发布: 2021-06-24 15:18:57
转载
1958人浏览过

Github 准备事项

1.在仓库settings里添加webhooks

以私人仓库为例:
b0772d0509c2cdf1ec9d72152ab163a.png

1.创建完仓库之后,点击settings。

设置webhooks访问路径:
d8f4d2e36328272b8896606cb4599be.png

以我自己项目为例 ,框架使用的是tp6。在public/下创建一个名为basic.php的文件,目的在于当代码推送至服务器上时,github可以访问到并且可以执行的一个文件。
该文件用于执行shell 命令,在触发该链接时自动执行该文件里的命令,从而实现git 自动拉取。

2.测试链接是否生效,文件是否有被访问到

5c2bc396f2135e4e1207720e9e0405a.png

如上图所示,当出现绿色✅时表示此链接被访问到,当出现红色⚠️标志则表示文件没有被访问。以此排查链接问题还是代码问题。
  • [x] 至此Github方面完成。

    PHP代码部署

    1.添加钩子文件 执行shell命令

    下面展示一些 内联代码片

<?php     //git webhook 自动部署脚本
    $requestBody = file_get_contents("php://input");    //接收数据
    if (empty($requestBody)) {              //判断数据是不是空
        die(&#39;send fail&#39;);
    }
    $content = json_decode($requestBody, true);     //数据转换
    //若是主分支且提交数大于0
    if ($content[&#39;ref&#39;]==&#39;refs/heads/main&#39;) {
     //或将命令加入 shell里,看个人需求 git reset --hard origin/master && git clean -f
        $res = shell_exec(&#39;cd /www/wwwroot/xxxx/ && echo `sudo git pull` >&gt; b.log');//PHP函数执行git命令
        $res_log = '-------------------------'.PHP_EOL;
        $res_log .= ' 在' . date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '项目的' . $content['ref'] . '分支push'.$res;
        file_put_contents("git-webhook.txt", $res_log, FILE_APPEND);//将每次拉取信息追加写入到日志里
    }
?&gt;
登录后复制
  • [x]  至此命令 php shell部分已完成,可根据不同项目需求自行调试。

    常见错误处理

    1.php.ini 文件里shell 没有禁用  该错误比较常见,调试的时候很容易发现,就不再赘述。

    处理方法 将php.ini 里的shell_exec删除,重启服务即可。

    2. .git权限问题,将.git/目录下的文件权限组改成 www

    一般不会出现,当出现权限报错,建议先检查一下文件目录是否为你设置的权限组.如果不是,可以使用一下命令修改文件权限组
    //以www用户组为例
    chown -R www:www file/
    登录后复制

    3.权限组问题

    步步排查,当确定前面流程没有问题 而代码依然没有自动拉取时.手动执行以上shell 如果代码成功拉取,可以排除shell问题。打开日志记录,如果日志记录里的内容为空,可以尝试 使用将老版本替换为新版本的方法

    4.出现类似报错 Host key verification failed.^M fatal: Could not read from remote rep......

    是因为权限秘钥出现了问题,在www权限组里没有创建连接github的公钥
    这里作者使用的是此方法解决,如果有大佬有其他解决方案,欢迎私信或评论区留言。
    vim 打开 /etc/sudoers  在root下添加一行 www 执行sudo 权限免密码
    4731e47f5358416a4dff89af956edc7.png

    5. 完结,至此你的webhook就可以工作了,修改文件并提交,查询日志。

    1b9855fd31a29fe3f7dffb17b9cc163.png

    本地环境 centos + php7.3 + nginx

以上就是关于web hooks服务器自动拉取代码php thinkphp6的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:segmentfault网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号