一般在宝塔插件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