宝塔 WebHook 代码自动更新到阿里服务器上
原创
©著作权归作者所有:来自51CTO博客作者Q神的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、在服务器中安装GIT服务 这个参考之前安装方法,宝塔环境也是一样子安装的
二、安装WebHook
三、添加脚本 (先添加再编辑,窗口大一些好操作)
3.1 能用代码,服务器所有GIT都适用
#!/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/$1"
#git 网址
gitHttp="https://gitee.com/rizadon/$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
例子:创建xxx.com网站
WebHook网址:http://100.200.200.400:3009/hook?access_key=3XvIsjw24z1TuzJONtHvfohN9yrshaCLsyrg5A1eAjqNwosx¶m=xxx
网站名称对应:xxx.com
码云仓库网址也要对应:https://gitee.com/fdsf451/xxx.git
四、在码云上添加WebHook网址
把上面宝塔中的WebHook 网址复制过来
五、WebHook 一对一代码更新 不用带param参数
WebHook网址:http://100.200.200.400:3009/hook?access_key=3XvIsjw24z1TuzJONtHvfohN9yrshaCLsyrg5A1eAjqNwosx
六、在码云上部署公钥
进入具体项目仓库
把宝塔中生成SSH复制过来
如果其它仓库已经使用过SSH,在这里启用就行
七、测试代码拉新
代码没有更新,宝塔WebHook日志显示 但是代码没有更新到,发现在需要在码云上合拼两次阿里服务器才更新到,就是说要更2次
代码改进:加多一句代码
git fetch --all #先删除再拉,不然需要拉二次才到更新到
八、简单代码实现-测试代码拉新
在宝塔 webhook填写代码
// cd 你的网站路径 && git pull 你的码云地址 refs/heads/你的分支 2>&1
cd /www/wwwroot/cms.xxx.com && git pull git@gitee.com:xxx/applist.git refs/heads/develop 2>&1
7.1 在码云合拼代码
说明成功了。宝塔WebHook日志显示 但是代码没有更新到
用命令查看下原因:
//先进入网站根目录
cd /www/wwwroot/cms.xxxx.com
//然拉下
git pull git@gitee.com:xxx/applist.git refs/heads/develop 2>&1
初始化
git init
发现错误:fatal: not a git repository (or any of the parent directories): .git (致命:不是git存储库(或任何父目录):.git)
说明不是GIT仓库,需要初始化下
再合拼更新发现还是没有更新代码,查看宝塔WebHook日志显示
From gitee.com:xxxx/applist
* branch develop -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
.htaccess
Please move or remove them before you merge.
Aborting
From gitee.com:xxx/applist
* branch develop -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
.htaccess
Please move or remove them before you merge.
Aborting
发现错误:error: The following untracked working tree files would be overwritten by merge (错误:合并将覆盖以下未跟踪的工作树文件:.htaccess访问)
原因:是宝塔创建网站的时候,会自动生成四个文件,但是初始化GIT仓库是需要是空白一片,不能任何文件的,
把回到网站根目录把文件全部删除后更合拼更新,发现在OK。搞定收工。
如果上面的不行,你再查下面的这些原因:
宝塔webhook 执行后返回{"code": 1},说明执行异常了,请检查命令是否正常。一般来说原因是:
1、路径错误
2、git 仓库的地址异常、没有 pull 权限
3、远程 git 仓库被强制回滚
八、简单代码实现
参考:宝塔git+webhooks实现代码同步更新