gitee代码同步更新到服务器

通过宝塔的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进底下后,标题会自动生成,直接点击添加即可:

gitee代码同步更新到服务器

部署公钥成功

gitee代码同步更新到服务器

创建项目目录

宝塔新建一个空文件的项目目录

gitee代码同步更新到服务器

安装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

gitee代码同步更新到服务器

确保脚本没问题后,重启我们的宝塔,在终端输入下面代码

[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生成的密钥,复制红色框里的内容

gitee代码同步更新到服务器

注意:改url可以直接使用api测试是否正常访问

gitee代码同步更新到服务器

配置Gitee的WebHooks

进入仓库的WebHooks功能页面,添加WebHooks,需要注意的是URL最后的aaa必须最后一个改成仓库名

gitee代码同步更新到服务器

添加成功

gitee代码同步更新到服务器

更新本地项目

克隆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则代表测试成功

gitee代码同步更新到服务器

宝塔里查看WebHook日志

gitee代码同步更新到服务器

宝塔也成功更新项目


原文始发于微信公众号(面试技术):gitee代码同步更新到服务器

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/253949.html

(0)
Java朝阳的头像Java朝阳

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!