likes
comments
collection
share

git hooks配置curl访问链接进行代码更新

作者站长头像
站长
· 阅读数 30

之前一般都是git仓库和代码部署在同一台服务器上,这样配置git hooks自动更新代码就很容易,类似下边这样:

在git仓库的hooks目录下新建文件post-update:在文件中写入

#!/bin/sh
# 你代码部署的位置
DEPLOY_PATH=/usr/share/nginx/html/xxxxx
# echo commit on `date +"%Y-%m-%d %H:%M:%S"` >> commit.log
unset GIT_DIR
cd $DEPLOY_PATH
git pull
# echo "commit success"
# exec git update-server-info

更多相关知识请移步《linux服务器搭建git并配置秘钥及服务器端自动更新

但是,你的git仓库和你代码部署不在同一台服务器上的时候,上边的很明显就没有办法使用了。该怎么搞呢。百思不得其解。

想了好久,突然灵光一现,对啊,linux 有curl啊,可以配置hooks 直接使用curl 访问PHP接口,我在PHP接口里边写上git更新命令不就行了嘛:

#!/bin/sh
# 你的代码在服务器中的目录
# DEPLOY_PATH=/usr/share/nginx/html/xxxxx
 
# echo commit on `date +"%Y-%m-%d %H:%M:%S"` >> commit.log
# unset GIT_DIR
curl http://xxx.xxxx.xxxx/index.php/xxx/gitPull
 
# cd $DEPLOY_PATH
# git pull
# echo "commit success"
# exec git update-server-info

其实就是访问PHP框架中的一个方法:放哪里看你心情。

    /**
     * @name: git pull 更新代码
     * @author: camellia
     * @date: 20200813
     * @email: guanchao_gc@qq.com
     */
    public function gitPull()
    {
        // 注:2>&1 是显示执行结果
        // exec("cd /usr/share/nginx/html/xxxxx && git reset --hard  && git pull 2>&1", $data);
        exec("cd /usr/share/nginx/html/xxxxx && git reset --hard  && git pull", $data);
        var_dump($data);
    }

我的git项目放在/xxxx/xxxx/xxx/xxx/xxx下,切换到这个目录,然后git reset --hard 把git设置到最新版本(这里是为了防止在服务器上面改了代码,更新的时候会叫你先提交更改的代码,),git pull 2>&1 再更新代码。

由于我这里使用的是阿里云的服务器,所以默认就是root用户,没有遇到权限的问题,所以,我也就没有尝试,没试过的东西不能瞎写。如果你的用户不是root,以上的代码可能还是需要修改一下再使用。具体怎么改……我遇到了再说

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”