利用Git+ 宝塔WebHook 实现git更新远程同步到Linux服务器中的多个目录
希望本地项目push到Git平台(Coding、码云、GitHub)上后,自动pull到Linux服务器,实现本地与服务器上的多个目录的数据同步更新。
环境:(Coding 开放平台+Linux宝塔+Git,当然其他git平台同样适用,只要Git的平台支持WebHook 即可。
需求:本地项目同步到Git平台,服务器自动同步Git平台上的数据。
目的:希望本地项目push到Git平台(Coding、码云、GitHub)上后,自动pull到Linux服务器,实现本地与服务器的数据同步更新。
项目目录1: /www/wwwroot/mla.xin (mla.xin变量,自定义)
项目目录2: /www/wwwroot/mla.xin2 (mla.xin2变量,自定义) ...
可以有更多的目录
步骤一:
宝塔自带 git(没有的话可以自行安装),生成公钥后添加公钥到Coding (可以通过ssh 拉取coding上的代码)
ssh-keygen -t rsa
一路回车即可,公钥的位置/root/.ssh/id_rsa.pub,将里面的公钥复制粘贴到 Coding (个人设置-SSH公钥)
步骤二:
宝塔面板安装宝塔插件-宝塔WebHook,设置,添加钩子脚本
#!/bin/bash
echo ""
echo "Start..."
#gitPULL 函数
function gitdis()
{
starttime=$(date +%Y-%m-%d\ %H:%M:%S)
echo $starttime
echo "########## Web站点路径:$1 开始复制"
#判断项目路径是否存在
if [ -d "$1" ]; then
cd $1
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
git clone $gitHttp gittemp
mv gittemp/.git .
rm -rf gittemp
fi
#拉取最新的项目文件
git pull
#设置目录权限
echo "End"
else
echo "该项目路径不存在"
echo "End"
fi
echo "Web站点路径:$1 拉取成功"
}
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
echo "param参数错误"
echo "End"
exit
fi
#git 网址
gitHttp="https://git.dev.tencent.com/yundun/tmla.git"
#git项目路径
gitdis "/www/wwwroot/mla.xin"
gitdis "/www/wwwroot/mla.xin2"
exit
其中git网址在Git平台那可以查询到,之后生成webhook URL(http://面板/hook?access_key=秘钥¶m=mla.xin),将网址粘贴到Git平台上新建WebHook中的URL里。
备注:可同时推送多个服务器,已方便使用负载均衡。