通过宝塔的WebHook、Git、Gitee的WebHooks实现服务器的代码与Gitee的代码同步更新
安装git
执行以下命令
[root@localhost ~]# yum install curl-devel expat-devel gettext-devel
openssl-devel zlib-devel
[root@localhost ~]# yum -y install git-core
[root@localhost ~]# git --version
git version 1.8.3
生成公钥
输入下面命令后回车三下
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:M/st5de1i6D71uBoAkAwA6+lK9Dif7sN5sN8axyc3r0 root@localhost
The key's randomart image is:
+---[RSA 2048]----+
|o+. |
| .o. |
| + |
| = . |
|= . . . S |
|oo . + + .. .|
|o. oo+ + ++o .o|
|. . o=o* =o=o.o..|
| ..+*o+o=Eoo ..|
+----[SHA256]-----+
获取SSH密钥
查看公钥,按顺序输入下面代码,最后一个是获取密钥,cat 后面是公钥文件名
[root@localhost ~]# cd ~/.ssh
[root@localhost .ssh]# ls
authorized_keys id_rsa id_rsa.pub
[root@localhost .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAOsDs4gQ/atT4prPH5KepG5lHxnfT1MZJVRmeXadxykujwo7WQModzdux+V/DYGobxmeWerfY9MeZmYpzCKv97lRpkCJyc/q8awa2vIcan/BA3wLtLTAQILfxId/OVbsYjkO2F+rbOqZ8KQm5gwqsGkO6vsl14fCWhzazSoHkYQV0NSpPHC9ZLa2eDzVQDRK+mOpXGsrUMfallyNA3b2sOWUCFJpkka8iRwhhZjQf7eiJ4cPrXK1o3vxGWt6RENop4nBOJOV8lgAgiAvQUbIY1iDPPhZIdwYhaw7kizkVffD9tUdLLtqgAiFdc21wpVH+aPldHGQBobsMCeEbSde5 root@localhost
Gitee仓库加公钥
创建仓库,进入仓库管理的添加公钥功能,将上面复制的密钥copy进底下后,标题会自动生成,直接点击添加即可:
部署公钥成功
创建项目目录
宝塔新建一个空文件的项目目录
安装WebHook并配置
在宝塔界面的软件商店里搜索webhook并安装,注意:webhook选择2.3版本,一开始我安装了2.5版本时候,webhook url无法访问,转2.3版本之后就正常。安装成功后添加脚本:
#!/bin/bash
echo ""
# 输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
# git项目路径(这里根据自己的项目路径进行修改)
gitPath="/www/wwwroot/webhook"
# git网址(这里根据自己的Git地址进行修改)(ssh的地址||http地址)
gitHttp="https://gitee.com/xxx/webhook.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 "拉取最新的项目文件"javascript:;
sudo git reset --hard origin/master
sudo git pull
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
确保脚本没问题后,重启我们的宝塔,在终端输入下面代码
[root@localhost ~]# /etc/init.d/bt restart
Stopping Bt-Tasks...done
Stopping Bt-Panel...done
Starting Bt-Panel....done
Starting Bt-Tasks... done
获取WebHook密钥
重启后,进入软件商店,查看我们宝塔WebHook生成的密钥,复制红色框里的内容
注意:改url可以直接使用api测试是否正常访问
配置Gitee的WebHooks
进入仓库的WebHooks功能页面,添加WebHooks,需要注意的是URL最后的aaa必须最后一个改成仓库名
添加成功
更新本地项目
克隆gitee项目
xxx@LAPTOP-OVFTH3H5 MINGW64 /d/phpstudy_pro/WWW
$ git clone https://gitee.com/xxx/webhook.git
删掉原来的README.en.md,然后更新到远程仓库
xxx@LAPTOP-OVFTH3H5 MINGW64 /d/phpstudy_pro/WWW/webhook (master)
$ git add .
xxx@LAPTOP-OVFTH3H5 MINGW64 /d/phpstudy_pro/WWW/webhook (master)
$ git commit -m"0324"
[master e279795] 0324
1 file changed, 36 deletions(-)
delete mode 100644 README.en.md
xxx@LAPTOP-OVFTH3H5 MINGW64 /d/phpstudy_pro/WWW/webhook (master)
$ git push origin master
info: detecting host provider for 'https://gitee.com/'...
warning: auto-detection of host provider took too long (>2000ms)
warning: see https://aka.ms/gcmcore-autodetect for more information.
info: detecting host provider for 'https://gitee.com/'...
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (1/1), done.
Writing objects: 100% (2/2), 221 bytes | 110.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/xxx/webhook.git
e628638..e279795 master -> master
查看gitee的webhooks请求历史
在仓库的WebHooks功能页面点击测试,进入查看更多查看结果,中间是200则代表测试成功
宝塔里查看WebHook日志
宝塔也成功更新项目
原文始发于微信公众号(面试技术):gitee代码同步更新到服务器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/253949.html