宝塔私有化部署git
准备工作:在宝塔应用商店中安装webhook,
在命令行中输入git --version看是否有安装git,如果没有,运行下面命令安装
yum install git
一、创建公钥
cd ~/.ssh
ls
看是否有 id_rsa.pub 文件 如果没有,用下面命令生成证书
ssh-keygen -t rsa -C "XXX@XXX.com"(XXX@XXX.com为你自己的git账号)
(如果出现报错:unknown key type rsa\302\240,换命令
ssh-keygen -t ed25519 -C "xx@xx.com"
)
然后一路回车
生成完之后查看证书
cd ~/.ssh
ls
cat id_rsa.pub
或
cat id_ed25519.pub
二、添加公钥
在git上添加公钥,我是企业版,在仓库设置-部署公钥管理

三、宝塔安装webhook插件
进入宝塔软件商店,搜webhook 然后点安装
安装完之后进入设置页面


下面是脚本文件
#!/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/git/$1"
#git 网址
gitHttp="git@gitee.com:xxx/$1.git" //自己仓库的链接
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "该项目路径不存在"
echo "新建项目目录"
mkdir $gitPath
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
或
#!/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项目路径
gitPathList=("/www/wwwroot/admin/facemall-admin")
for gitPath in ${gitPathList[*]}
do
echo "----------Web站点路径:$gitPath ----------"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
# echo "End"
php artisan migrate
continue
else
echo "该项目路径不存在"
echo "新建项目目录"
mkdir $gitPath
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
# echo "End"
php artisan migrate
continue
fi
echo "----------end:$gitPath ----------"
done
echo "End"
#git 网址
#gitHttp="git@gitee.com:zswq_xm/$1.git" //自己仓库的链接
注意 你需要确认你的项目路径与仓库目录
$1是变量,通过GET获取的,后面传参传参再讲,如果你的站点名称与仓库名称不一致,建议把站点改成固定的目录
我的测试服务器站点目录在/www/wwwroot/下面,你的不是就要改成你自己的
git网址xxx是你自己的git仓库目录,当然,你也可以直接复制代码仓库的地址粘贴替换

(PS:部分用户反馈,宝塔的添加那里的输入框可能会过滤代码,因此添加保存后务必点击编辑按钮查看代码的完整度,你也可以在编辑状态重新粘贴修改保存~)
四、配置gitee的webhook

点击宝塔webhook的查看秘钥按钮,将密钥填入gitee的密码框中,将post路径填入gitee的POST路径框中



五、将Gitee仓库clone到服务器的本地目录中
进入到你要放置的目录中 然后git clone git@gitee.com:xxx/xxx.git(注意,这里要复制SSH地址clone不要用HTTPS)
然后试改个东西推送下
如果出现如下信息,则说明更新成功了

如果发现日志有增加,但是代码没有更新
去项目根目录使用 git pull,使用 2 次手动拉代码,如果2次都需要输入密码,就使用一下命令后重新拉取
git config --global credential.helper store
git pull
Enter passphrase for key ‘/root/.ssh/id_rsa’ : git push 重复输入密码的问题
这是因为使用ssh协议时的公私钥设置了密码
删除:
ssh-keygen -p
重新设置:
Enter file in which the key is (/Users/haoyangruanjian/.ssh/id_rsa):直接点回车, Enter new passphrase (empty for no passphrase):也是直接回车不设置密码
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44052462/article/details/129727777

浙公网安备 33010602011771号