git推送宝塔面板指南

御宅男 2022年06月10日 10 14:54 PM 4052浏览 4079字数

前言

我们每次git提交代码的时候,服务器网站获取最新git代码,特别是如果你管理几十个网站代码,都需要登录服务器,手动拉取下代码,这样非常繁琐,如果我们用一套代码,不同服务器环境拉取的话,甚至需要手动改里面的比如数据库配置,所以我们需要用宝塔webhook来实现,推送代码的时候即可实现服务器自动拉取

宝塔安装webhook

webhook添加脚本


在webhook里面添加一个钩子
执行脚本如下,有两处须要批改
<code>gitPath="/www/wwwroot/$1"</code>(留神你的阿里云文件门路,如果不一样须要批改)
<code>gitHttp="https://gitee.com/yourname/$1.git"</code>(留神你的近程仓库地址,肯定要改)
<code>.env.test</code>这个根据环境改成对应的,比如正式环境改成.env.www,具体请看下面的文章解说

#!/bin/bash
echo &quot;&quot;
#输出当前时间
date --date='0 days ago' &quot;+%Y-%m-%d %H:%M:%S&quot;
echo &quot;Start&quot;
#判断宝塔WebHook参数是否存在
if [ ! -n &quot;$1&quot; ];
then javascript:;
          echo &quot;param参数错误&quot;
          echo &quot;End&quot;
          exit
fi
#git项目路径($1是param后面的参数,指向你的服务器的目录)
gitPath=&quot;/www/wwwroot/$1&quot;
#git 网址 (替换成你的git地址,可选择https方式或者ssh方式)
gitHttp=&quot;https://gitee.com/yourname/$1.git&quot;
 
echo &quot;Web站点路径:$gitPath&quot;
 
#判断项目路径是否存在
if [ -d &quot;$gitPath&quot; ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d &quot;.git&quot; ]; then
                echo &quot;在该目录下克隆 git&quot;             
                sudo git clone $gitHttp gittemp
                echo &quot;切换develop分支&quot;
                sudo git checkout develop
                echo &quot;移动+删除文件夹&quot;
                sudo mv gittemp/* .
                sudo mv gittemp/.[^.]* .
                sudo rm -rf gittemp
        else
            echo &quot;切换develop分支&quot;
                sudo git checkout develop
                echo &quot;更新文件&quot;
                sudo git checkout .
                sudo git pull origin develop
                sudo git fetch -p
        fi
        echo &quot;配置文件&quot;
        sudo cp .env.test .env
        echo &quot;设置目录权限&quot;
        sudo chown -R www:www $gitPath
        echo &quot;End&quot;
        exit
else
        echo &quot;创建目录&quot;
        sudo mkdir $gitPath
        cd $gitPath
        echo &quot;在该目录下克隆 git&quot;             
        sudo git clone $gitHttp gittemp
        echo &quot;切换develop分支&quot;
        sudo git checkout develop
        echo &quot;移动+删除文件夹&quot;
        sudo mv gittemp/* .
        sudo mv gittemp/.[^.]* .
        sudo rm -rf gittemp
        echo &quot;配置文件&quot;
        sudo cp .env.test .env
        echo &quot;设置目录权限&quot;
        sudo chown -R www:www $gitPath
        echo &quot;End&quot;
        exit
fi

ps:哪一步走不通就去echo看看日志,或者去相应目录下手动执行相关命令,看看手动行不行,不行就解决错误。

代码中的.env解说

传统正式环境和测试环境比如数据库配置不一样,可能我们需要两套配置
像以上代码有测试配置文件.env.test,推送后会自动复制为.env,正式环境钩子代码自行修改下改成.env.www
这样的好处不管是否正式或者测试环境,只需要配置多个.env,这样代码不需要任何修改即可运行正式或测试环境

从图片上面可以看到代码有很多不同env配置,它是对应不同环境,你只需要钩子代码里面修改.env.test

查看密钥

添加好钩子后,点击查看密钥

复制上面的网址,其中param参数需要改成相对wwwroot的网站路径,比如param=www.demo.com

配置git平台的webhook

码云、github、阿里云云效等webhook配置,基本设置都差不多,以下为云效配置,其他平台参考下

最后

基本上就配置好了,需要注意的是服务器代码没更新,需要看钩子里面的日志,常见就是git冲突,或权限问题
我的博客即将同步至<a href="https://www.qq.com/";target="_blank" title="腾讯">腾讯</a>云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=8gieptuijzfv

标签: 宝塔面板
最后修改:2022年06月15日 16:26 PM

非特殊说明,本博所有文章均为博主原创。