GitHub上项目自动拉取和部署到服务器

前段时间我发现我们前端的Vue项目的提交到GitHub之后就会自动pull和build。于是,我就百度和谷歌了一下,了解了一下其背后的工作原理。顺便也实现了一下。下面我就把实现的过程给大家罗列一下:

首先我现在GitHub上创建了一个项目,项目创建之后我们需要对该项目设置(Settings),里面有一选项Webhooks,我们需要点击他,最后需要在这里添加一个回调地址

GitHub设置

下面给大家看下回调的数据大概是怎么样的,数据很长只截取了一部分

回调内容

最后我们需要在服务器上创建PHP文件来接收,因为我自己是PHP程序员,下面我就用PHP代码来给大家实现:

    
    //git webhook 自动部署脚本
    $requestBody = file_get_contents("php://input");    //接收数据
    if (empty($requestBody)) {              //判断数据是不是空
        die('send fail');
    }
    $content = json_decode($requestBody, true);     //数据转换
    //若是主分支且提交数大于0
    if ($content['ref']=='refs/heads/master') {
        $res = shell_exec('cd /var/www/html/site2/hook/ && git reset --hard origin/master && git clean -f && git pull 2>&1 && git checkout master');           //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);//将每次拉取信息追加写入到日志里
    }复制代码

最后当然还是需要给这个回调程序添加执行权限

执行命令 chmod 755 git-webhook-handler.php

最后

我这里实现的项目的自动拉取,那么如果同学需要其他操作,做稍微的修改就好了。如有错误请大家谅解并指出。

你可能感兴趣的:(GitHub上项目自动拉取和部署到服务器)