git自动更新功能

确认权限

因为一般Linux系统网页用的wwwwww-data用户和用户组,所以要实现自动来去,首先要在www用户权限下生成ssh密钥,不然没有权限,其次就是,要把用root用户拉去的代码,批量改成www用户

1. 给www权限

复制代码
vi  /etc/sudoers
www     ALL=(ALL)     NOPASSWD:/bin/chown,/bin/chmod,/usr/bin/git

2.切换www账户

一切操作在www用户下完成

给www账户添加git 邮箱和和用户名

bash 复制代码
sudo git config --global user.email "xxx@qq.com"
sudo git config --global user.name "finejade"

添加origin

如果remote- roigin 远程地址是http的,改成ssh的,可以使用ssh秘钥免登录提交

bash 复制代码
git remote -v
git remote remove origin
git remtoe add origin git@git.code.tencent.com:finejade/thinkphp6.git

生成密钥

生成密钥,一直下一步

复制代码
 ssh-keygen -t rsa -C "332410549@qq.com"

把公钥填写到git个人账号的SSH密钥

编写自动拉去代码

php 复制代码
  public function autopull()
    {


        $json = file_get_contents("php://input");
        file_put_contents('./a.txt',$json);
        //获取请求参数
        if (empty($json)) {
            die('request is empty');
        }
        $data = json_decode($json, true);

        $savePath =  Env::get('root_path');
        //密码
        if (isset($data['password'])) {
            $password = 'AJ8ENFEOWLS';
        //验证密码是否正确
            if ($data['password'] != $password) {
                header("HTTP/1.1 403 Forbidden");
                die('非法提交');
            }
        }

        //一定要在php.ini 配置文件中解除所有禁用 disable_funtions  exec 方法

        // git放弃修改,强制覆盖本地代码
        echo shell_exec("cd {$savePath} && git checkout ."); // git checkout
        // echo shell_exec("cd {$savePath} && git pull {$gitPath}  2>&1");

        $res = PHP_EOL . "pull start " . PHP_EOL;
        $res .= shell_exec("cd " . $savePath . " && git pull origin develop 2<&1 "); //代码仓库 一定要使用ssh方式不然每次都得输入密码
        $res_log = PHP_EOL;
        $res_log .= $data['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $data['repository']['name'];
        $res_log .= '项目的' . $data['ref'] . '分支push了' . $data['total_commits_count'] . '个 ';
        $message = '';
        if (isset($data['commits']['message'][0])){
            $message = $data['commits']['message'][0];
        }elseif (isset($data['commits']['message'])){
            $message = $data['commits']['message'];
        }
        $res_log .= 'commit:' . $message;
        $res_log .= $res;
        $res_log .= "pull end -----------------------------------------------------" . PHP_EOL;

        //保存日志文件路径 注意开启日志写入权限
        Log::debug('git自动拉去:'.$res_log);
        if (isset($data['ref']) && $data['total_commits_count'] > 0) {
            $typeText = "\r\n更新正常\r\n";
            $res_log .= $typeText;
        } else {
            $typeText = "\r\n无提交也更新\r\n";
            $res_log .= $typeText;
        }
        echo $res_log;
    }

在git远程仓库配置回调地址

查看触发结果

相关推荐
stonewl259911 小时前
2026化工行业 GHS/CLP 国产标签打印软件合规打印方案
大数据·人工智能·物联网
Wzx19801211 小时前
Redis&ES——Retriever的抽象实现
数据库·人工智能·redis·elasticsearch
xywww16811 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
牛奶咖啡1312 小时前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(下)
大数据·hadoop·hadoop集群配置文件解析·hadoop高可用集群安装部署·配置指定多台服务器相互免密·配置hadoop服务开机自启·ansible部署hadoop
在水一缸12 小时前
深度解析 GPT-5.6:大模型架构演进与复杂任务实战指南
大数据·人工智能·gpt·架构·大模型·架构演进·gpt-5.6
无忧智库12 小时前
智慧电厂:引领发电行业新革命(PPT)
大数据·人工智能
小果因子实验室13 小时前
量化研究--编写第一个回测算法策略研究
大数据·区块链
chenyulin454514 小时前
企业微信API二次开发:万级并发回调下的极致幂等性设计与防重放架构实战
大数据·人工智能·安全·架构·企业微信
Elasticsearch14 小时前
让向量听懂孤独:我是如何用 Elastic Agent Builder 构建一个情绪疗愈 agent 的
elasticsearch
BizObserver15 小时前
传统制造企业官网升级:2026数字化品牌阵地建设与服务商能力评估
大数据·人工智能·制造