起因: 经常本地push到gitee等线上代码仓库,然后登陆服务器在进行pull,很麻烦,想偷懒怎么办?使用git的webhook实现!
1.实现原理
1.1本地提交推送
1.2线上仓库监听push动作,也就是webhook,回调url触发服务器的pull操作
1.3服务器pull操作
2.实现步骤
2.1本地和服务器安装git(略过)
2.2码云进入项目->管理->webhook设置,(其他原理一样 git,coding)
url就是你服务器上可以访问的地址, 该地址是进行pull命令的文件,可以是php,python,node等等等,勾选push就是当push动作的时候触发这个url,访问服务器进行pull操作,勾选其他的就是其他的动作,这里不做解释. 添加后,会有测试按钮,建议代码写上测试一下
1 shell_exec('ls')
如果返回文件目录,则表示该权限可以执行,服务器是LNMP, 然后只需要一行代码(我的需求就是自动拉取,所有不做深入的操作,比如验证,日志,分类什么的可以自己补充)通过代码可以查看回调的信息,根据信息进行操作
$request = json_decode(file_get_contents('php://input'), true)
拉取动作
echo shell_exec('cd your_path && git pull')
3.一些坑
如果不成功,建议 LL 命令查看一下用户权限 一般PHP是www-data用户, 使用
sudo chown -R :www-data your_path sudo chmod -R g+w your_path
主要是权限问题,这样应该可以啦! 路由什么的自己去搞定啦! 接下来就可以开心的本地push服务器自己去pull啦~哈哈哈