目 录CONTENT

文章目录

Git WebHook (自动拉取代码)

ABin
2024-01-02 / 0 评论 / 0 点赞 / 102 阅读 / 0 字

下载&安装

  • 宝塔-->软件商店-->搜索宝塔WebHook -->点击安装

配置 宝塔WebHook

  • 点击宝塔WebHook后边设置-->弹出的窗口选择添加Hook

  • 名称:“Project Name”

  • 执行脚本:参考下方代码

  • 以下代码需要修改gitPathgitHttp的值

#!/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/zixue"
#请修改为自己的git 网址
gitHttp="git@gitee.com:xxxx.git"
 	
echo "Web站点路径:$gitPath"
 
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
				rm -rf gittemp
        fi
        #拉取最新的项目文件
        git reset --hard origin/master
        git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

gitee 配置 WebHooks

复制POST链接

  • 宝塔WebHook设置页面点击查看密钥

  • 复制此链接http://*.*.*.*:prot/hook?access_key=qTKKvdr4***&param=aaa

  • 注意:

    • 链接为https:// 需要关闭宝塔ssl

    • 链接复制出来第一行结尾可能存在空格需要注意

在gitee中添加请求

  • 去gitee仓库首页-->管理-->WebHook-->添加WebHook

  • URL:http://*.*.*.*:prot/hook?access_key=qTKKvdr4***&param=aaa

  • WebHook 密码/签名密钥:默认不写

  • 选择事件:Pull Request,(其他根据需求填写)

  • 点击添加

  • 成功:

    • {"code": 1}

  • 错误:

    • SSLHandshakeException: PKIX path building failed:***

      • URL:中https:// 改为http://

      • 关闭宝塔SSL

gitee中添加公钥

  • 配置 ***

测试连接

ssh -T git@gitee.com

5.将git项目绑定的公钥所对应的私钥文件传输至服务器.ssh目录中

使用下面的命令测试是否ssh连接

然后去git- webhooks 点击测试

返回code 1 即为成功。

注意点:私钥文件一定要放在root/.ssh目录下 ,如果该文件夹下已存在id_rsa,则需改为其他的名字,并使用

eval "$(ssh-agent -s)"

开启服务,然后使用

ssh-add 要添加的rsa的文件名 

服务器就可以使用当前添加的这个私钥进行验证了。

问题

日志调用3次全是同一条提交信息,(宝塔版本:5.9.1,WebHook版本:1.0)

解决方式:脚本以下代码中 git pull 用root权限执行(sudo -u root git pull)

#拉取最新的项目文件
        git reset --hard origin/master
        #改为root权限执行
        sudo -u root git pull 
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit

0

评论区