web hooks服务器自动拉取代码php thinkphp6
Github 准备事项
1.在仓库settings里添加webhooks
【web hooks服务器自动拉取代码php thinkphp6】以私人仓库为例:
文章图片
1.创建完仓库之后,点击settings。
设置webhooks访问路径:
文章图片
以我自己项目为例 ,框架使用的是tp6。在public/下创建一个名为basic.php的文件,目的在于当代码推送至服务器上时,github可以访问到并且可以执行的一个文件。2.测试链接是否生效,文件是否有被访问到
该文件用于执行shell 命令,在触发该链接时自动执行该文件里的命令,从而实现git 自动拉取。
文章图片
如上图所示,当出现绿色?时表示此链接被访问到,当出现红色??标志则表示文件没有被访问。以此排查链接问题还是代码问题。
- [x] 至此Github方面完成。
PHP代码部署1.添加钩子文件 执行shell命令下面展示一些内联代码片
。
> 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);
//将每次拉取信息追加写入到日志里
}
?>
- [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的公钥
5. 完结,至此你的webhook就可以工作了,修改文件并提交,查询日志。
这里作者使用的是此方法解决,如果有大佬有其他解决方案,欢迎私信或评论区留言。
vim 打开 /etc/sudoers 在root下添加一行 www 执行sudo 权限免密码
文章图片
文章图片
本地环境 centos + php7.3 + nginx
推荐阅读
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 探索免费开源服务器tomcat的魅力
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)
- spring|spring boot项目启动websocket
- OC:|OC: WKWebView详解
- WKWebview|WKWebview js 调用oc 和oc调用js
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- webug3.0渗透基础第九、十关笔记
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export