本文最后更新于 2023-12-16,文章内容可能已经过时,请注意发布时间。


title: 宝塔使用webhook自动部署
id: bab1f4cc-0922-49f5-8bd5-6f2207bf4ad1
date: 2023-12-11 00:41:25
auther: liqi
excerpt: 前言 大家在部署项目的时候是不是还是传到git中后去服务器pull,其实git大多数是有自动部署的方式~ 正文 宝塔 首先,要在宝塔上下载一个webhook 然后如果是私有项目的话就去终端输入cd ~/.ssh && ls查看密钥 如果没有的话就输入ssh-keygen -t rsa -C “you
permalink: /archives/519cacb7-ad7c-4024-a817-14ff6bb8cbdc
categories:

  • fu-wu-duan
    tags:
  • linux

前言

大家在部署项目的时候是不是还是传到git中后去服务器pull,其实git大多数是有自动部署的方式~

正文

宝塔

首先,要在宝塔上下载一个webhook

图片

然后如果是私有项目的话就去终端输入cd ~/.ssh && ls查看密钥

图片

如果没有的话就输入ssh-keygen -t rsa -C "your_email@example.com"来生成密钥,会让你输入三个东西,没有必要的话直接回车留空即可

图片

然后输入 cat id_rsa.pub来查看证书内容,复制他,一会要去git中配置

图片

接着去git上(我这里用的是gitee)把ssh链接保存

图片

去宝塔上点击配置、新增,把下面这个脚本配置进去,注意要把你的git项目和git链接更换成你自己的

#!/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="你在服务器存放的项目路径"
    # git 网址
    gitHttp="刚刚保存的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 "End"
            exit
    else
            echo "该项目路径不存在"
            echo "End"
            exit
    fi

查看密钥链接并且保存,一会要用

图片

git平台

这里我用gitee的仓库来做示例

首先进入你的仓库,然后点击管理->公钥管理->添加公钥 把刚刚的公钥配置进去 ps:标题默认是你密钥的邮箱,可以自定义

图片

添加完成后会有一个可部署公钥

图片

添加完成后点击webhook配置链接

图片

配置好后去你要存放的目录中用ssh来克隆项目

图片

最后点击测试,去看日志,就会有最近的一次提交

图片

总结

这个方法可以有效的减少我们部署的时间,但是生产版本慎用,可以作为beta版本来快速测试线上接口