webhooks_1000.png 

一般在宝塔插件WebHook中配置git web 钩子的shell脚本如下:【脚本来源官方示例】

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then 
          echo "param参数错误"
          echo "End"
          exit
fi
#git项目路径
gitPath="/www/wwwroot/web/$1"
#git 网址
gitHttp="http://git.xxxxx.com/web/$1.git"

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
                rm -rf gittemp
        fi
        #拉取最新的项目文件
        git reset --hard origin/master
        git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

但是最近遇到一个比较奇怪的问题,所有操作都完成后,无论怎么测试,git pull一直都不会执行,也没有报错

无奈,最后自己写了一个脚本:

新建一个 /opt/shell/auto-git-pull.sh 脚本(路径可以自定义)

脚本内容如下

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"

echo "$1"

#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];then 
        echo "param ERROR"
        echo "End"
        exit
fi
#git项目路径 可以按照实际路径修改
gitPath="/www/wwwroot/$1"

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ];then
        cd $gitPath
        #拉取最新的项目文件
        sudo git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

然后在WebHook插件中写入

/usr/bin/sh /opt/shell/auto-git-pull.sh $1 > /www/wwwlogs/auto-git-pull.log

随后测试,git pull有记录了

2022-04-27 11:22:14
Start
your_path
Web站点路径:/www/wwwroot/your_path
Updating 38aad3fc..e1c51865
Fast-forward
 xxxxxxxxxxxxxxxxx | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)
End



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

分享到
  • QQ好友
  • 微信好友
  • 新浪微博