宝塔+码云使用WebHooks

发布于 2023-04-19  609 次阅读


1.准备

  • 码云或git仓库
  • 宝塔,需要创建一个空的网站,并且先清空文件内容
  • 宝塔软件里搜索 webhooks,选择安装即可

2.设置公钥秘钥

1.进入宝塔终端执行以下命令:

ssh-keygen -t rsa -C "你的邮箱"

在这里需要不断按回车确认,无需输入任何内容,3次左右即会出现以下内容即可:

Your public key has been saved in /Users/xxxx/.ssh/id rsa.pubThe key fingerprint is SHA256xxxxxxx

这里可以使用root或者www权限来进行执行,生成的目录有所不同,这里以root为例

2.打开文件/root/.ssh/id_rsa.pub复制里面的内容
3.打开项目仓库,进入仓库设置,找到部署公钥管理,选择添加部署公钥,把刚才复制的公钥粘贴到这里面

部署公钥

3.设置宝塔WebHook拉取代码

1.打开宝塔的WebHook软件,选择添加Hook

添加hook

2.编写代码,可以根据自己需求编写:

# !/bin/bash
echo ""
# 输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "-------开始-------"
# 判断宝塔 WebHook 参数是否存在
#if [ ! -n "$1" ];
#then
#          echo "param参数错误"
#          echo "-------结束-------"
#          exit
#fi
# web服务器 git 项目路径
gitPath="服务器网站文件路径"
# 码云项目 SSH 网址 (重点: 千万不要用 https 地址)
gitHttp="git的SSH地址"

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 "-----拉取成功-----"
        exit
else
        echo "该项目路径不存在"
        echo "-------结束-------"
        exit
fi

3.保存成功后,选择查看密钥,复制密钥和post地址

查看秘钥

3.设置仓库WebHooks

1.打开项目仓库,进入WebHooks,选择新建WebHook

新建WebHook

这里可以根据自己业务需求,勾选不同的事件

4.初始化宝塔网站仓库

1.进入宝塔终端,使用ssh方式拉取仓库到对应的网站目录,可以使用 git clone xxxxx . 来去除自带的目录

5.完成

1.点击宝塔WebHook测试按钮,如果成功拉取到代码,就说明成功了
2.点击码云WebHook测试按钮,如果请求成功了,那就说明没问题
3.注意如果拉取的是分支代码,那么git命令一定要写对具体分支