宝塔webhook自动同步git服务器同步
团队协作离不开git仓库,配置宝塔上面的webHook ,实现将本地代码提交到码云仓库后自己更新到云服务器!
一、在宝塔面板中的软件中安装”宝塔WebHook”,没有安装的直接点安装就行
二、查看服务器是否安装git
没有输出版本号,请执行以下命令安装git
yum install -y git
三、生成公钥
在终端执行命令,看图
假设如果没有得话,可以执行以下命令生成证书
一直回车就可以, 如果存在得话,不知道是否使用,也可以生成新的证书,名下如下
四、配置gitee
全部复制,粘贴到gitee你所需要配置得项目,管理->部署公钥管理->添加公钥 添加
五、配置宝塔webHook
点击 设置->添加 名称随意,例如 xx项目同步
执行脚本
#!/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 网址两种方式都可以ssh 或者https
gitHttp="git@gitee.com:phpvan/$1.git"
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp $1
sudo mv gittemp/.git .
sudo em-rf gittemp
fi
echo "拉取最新的项目文件"
# sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $1
echo "更新成功"
exit
else
echo "该项目路径不存在"
echo "新建项目目录"
mkdir $gitPath
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp $1
fi
echo "拉取最新的项目文件"
sudo git reset --hard origin/master
# sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
保存,一定要注意$1,$1后面我会讲,gitHttp地址,要使用ssh地址
然后查看密钥
然后复制画横线得部分,粘贴到gitee中webHooks中,添加webHook
WebHook 密码 是宝塔那边得密钥, param=aaa aaa就是$1值, 项目的根目录和git地址不相符的话,可以根据你项目得实际情况,进行修改,或着直接把代码$1写死都是可以
五、 在服务器完成git账户信息的写入
git config --global user.email "你的邮箱"
git config --global user.password "你的密码"
六、在gitee中执行测试
看下服务器是否成功拉取代码,如果不是,请在服务器项目根目录中手动执行
有可能会输入gitee的账户密码,正常输入即可,如果拉取下来的是项目的文件夹,请进去文件夹,全部剪切到项目的根目录中,然后删除生成的项目文件夹
项目结构如下所示
此时,可以修改下试试推送git,看看是否同步服务器,正常同步,在宝塔webhook中可以查看日志,如下所示代表同步正常
七、 异常问题处理
如果服务器和git冲突
可以在服务器执行命令
git pull
宝塔最新版需要https证书
证书报错的话,目前的解决办法,宝塔绑定域名,配置域名证书来解决