当前位置:   article > 正文

宝塔 + WebHook 自动同步Gitee代码(不看后悔系列)_宝塔webhook gitee

宝塔webhook gitee


需求

前后端代码每次在更新时,总要提交代码,想着有没有云效流水线那种模式,能同步代码。故用宝塔 + WebHook + Gitee来完成此操作。


一、WebHook

在宝塔的商店面板下载WebHook,安装后。添加Hook。名称任选,执行脚本在网上找了一个:

PS: 其中gitHttp中的xxx替换为自己gitee上的地址,比如我的主页为 https://gitee.com/acardia_liu,则我把xxx替换为acardia_liu即可。

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 网址
gitHttp="https://gitee.com/xxx/$1.git" //xxx替换为自己仓库的链接
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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

提交后,点击查看秘钥:
在这里插入图片描述
框起来的部分,在Gitee项目配置WebHook时会要到,param后面的参数为Gitee项目的仓库名,比如我的项目为test-webhooks,则将aaa替换为test-webhooks。
在这里插入图片描述

二、Gitee项目配置WebHook

项目添加WebHook

在这里插入图片描述

点击添加后,需填写如下参数:
在这里插入图片描述
URL填写WebHook中框起来的部分,param后面的参数为Gitee项目的仓库名。密码可以不用填。

三、安装Git

yum -y install git
  • 1

因为我配置了,无法重现,使用一下别人配置的代码

git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --global credential.helper store

//会生成.gitconfig 的文件,查看
cat ~/.gitconfig  //显示内容

[user]
        name = 输入的用户名
        email = 输入的邮箱
[credential]
        helper = store
// 假设你已经设置好origin并已拉取过代码
// 第一次pull会提示输入用户名密码
[root@iZ25mi9h7ayZ test]# git pull
Username for 'https://gitee.com': xxxx@xxxx.com
Password for 'https://xxxx@xxxx.com@gitee.com':输入正确密码(看不到输入内容)
//生成.git-credentials 隐藏文件
cat ~/.git-credentials
https://Username:Password@gitee.com
// 看到这个说明已经设置成功

vi ~/.git-credentials
//可加多个用户名密码

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

配置完成后,在wwwroot目录下,克隆自己的仓库(此处的文件目录应与gitee上的目录保持一致)。

git clone https://gitee.com/acardia_liu/test-webhooks.git
  • 1

测试:在Gitee项目上添加一个文件,看服务器是否进行同步处理。发现并没有同步代码,然后在test-webhooks目录中执行git pull时,提示:git config --global --add safe.directory /www/wwwroot/test-webhooks
在这里插入图片描述
因为git进行了版本升级,添加了新的目录安全限制。会造成在进行git常规操作或者在各类编辑器中无法发现.git文件。
解决:

  1. 忽略单个目录,以后每个目录都要执行以下命令,否则无法同步数据。
git config --global --add safe.directory /www/wwwroot/test-webhooks
  • 1
  1. 忽略全部文件夹。不适用于有多个用户的电脑,否则存在安全问题
git config --global --add safe.directory "*"
  • 1

解决完毕后,再执行git pull 看是否执行成功。
在Gitee项目新建文件fff,看是否同步成功。
在这里插入图片描述
增加文件成功!
在这里插入图片描述
再试试删除test文件:
在这里插入图片描述
删除成功!
在这里插入图片描述
webHook日志上也成功显示:
在这里插入图片描述


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/761290
推荐阅读
相关标签
  

闽ICP备14008679号