当前位置: 首页 > news >正文

宝塔webhooks与码云实现自动部署

1. 宝塔面板配置Webhook

  1. 登录宝塔面板,进入「软件商店」→ 搜索「Webhook」并安装。
  2. 添加Webhook
    • 名称:自定义(如 Gitee自动部署
    • 脚本:编写部署脚本,示例如下:
      #!/bin/bash
      
      # 项目路径(需替换为你的实际路径)
      PROJECT_PATH="/www/wwwroot/your_project"
      # Gitee仓库地址(推荐SSH格式,如 git@gitee.com:username/repo.git)
      GIT_REPO="git@gitee.com:username/repo.git"
      # 分支名(如 master 或 main)
      BRANCH="master"
      
      # 验证请求(可选,需在Gitee的Webhook中配置密钥)
      # 宝塔Webhook默认暂不支持自动验证,建议通过脚本验证签名(此处略,需自行实现)
      
      # 进入项目目录
      cd $PROJECT_PATH || exit 1
      
      # 强制重置代码(避免冲突)
      git reset --hard HEAD
      git clean -fd
      
      # 拉取最新代码
      git pull $GIT_REPO $BRANCH
      
      # 安装依赖(如npm、pip等)
      # npm install
      # pip install -r requirements.txt
      
      # 重启服务(如Nginx、PHP等)
      # systemctl restart nginx
      
      echo "自动部署完成"
      
    • 保存后,复制生成的Webhook URL(形如 http://服务器IP:端口/hook?access_key=xxx)。

2. Gitee仓库配置Webhook

  1. 进入Gitee仓库 → 「管理」→ 「WebHooks」→ 「添加WebHook」。
  2. 填写配置:
    • URL:粘贴宝塔生成的Webhook URL。
    • 密钥(可选):若需签名验证,填写密钥并在宝塔脚本中验证。
    • 触发事件:选择「Push」事件。
  3. 保存设置。

3. 配置SSH密钥(避免每次输入密码)

  1. 生成密钥对(如未生成过):
    ssh-keygen -t rsa -C "your_email@example.com"
    # 默认路径为 ~/.ssh/id_rsa
    # 打开终端(Linux/macOS)或 Git Bash(Windows)
    
  • 参数说明
    • -t rsa: 使用 RSA 算法。
    • -C "your_email": 备注(建议填写邮箱)。
  • 交互提示
    • 按回车使用默认密钥路径(~/.ssh/id_rsa)。
    • 输入密钥密码(可选,直接回车跳过)
  1. 添加公钥到Gitee
    • 复制 cat ~/.ssh/id_rsa.pub 输出的内容(从 ssh-rsa 到邮箱结尾)。
    • 点击设置在这里插入图片描述
    • 然后点击ssh公钥,命名并填入公钥的内容在这里插入图片描述
  2. 测试 SSH 连接
  • 验证是否配置成功

    ssh -T git@gitee.com
    
  • 成功响应

    Hello YourUsername! You've successfully authenticated, but GITEE.COM does not provide shell access.
    
  1. 配置 Git 仓库使用 SSH 地址
  • 如果之前使用的是 HTTPS 地址,需修改为 SSH 协议:

    # 进入项目目录
    cd /path/to/your/project
    
    # 查看当前远程仓库地址
    git remote -v
    
    # 修改为 SSH 地址(格式:git@gitee.com:username/repo.git)
    git remote set-url origin git@gitee.com:username/repo.git
    

4. 测试与排查

  1. 手动触发测试
    • 在宝塔的Webhook页面点击「测试」,查看日志是否执行成功。
    • 在Gitee仓库推送代码,观察宝塔日志(路径:/www/wwwlogs/webhook.log)。
  2. 常见问题
    • 权限不足:确保项目目录用户权限与脚本执行用户一致(如 chown -R www:www /www/wwwroot)。
    • Git拉取失败:检查SSH密钥是否生效(ssh -T git@gitee.com)。
    • 脚本路径错误:使用绝对路径,或先 cd 到目录再操作。
    • 依赖缺失:确保服务器已安装Git、Node.js等必要工具。

补充:增加安全性(可选)

在脚本中添加签名验证(需Gitee配置密钥):

# 获取请求头中的签名
SIGNATURE=$HTTP_X_GITEE_TOKEN
# 计算本地签名(需安装jq)
# JSON=$(cat /dev/stdin)
# CALC_SIGN=$(echo -n "$JSON" | openssl sha256 -hmac "你的密钥" | awk '{print $2}')
# 对比 $SIGNATURE 与 $CALC_SIGN 是否一致

通过以上步骤,即可实现Gitee代码推送后自动触发宝塔Webhook完成部署。

相关文章:

  • Cursor配置MCP Server
  • RabbitMQ系列(三)基本概念之Consumer
  • Python:字符串编码,常见操作,列表及常见操作
  • Linux系统软件管理
  • DeepSeek 开源狂欢周(一)FlashMLA:高效推理加速新时代
  • nacos数据同步原理能说下吗?
  • Django基础环境准备
  • 基因型—环境两向表数据分析——品种生态区划分
  • AI技术为旅行社打开新流量入口
  • python-leetcode-使用最小花费爬楼梯
  • 【JSON2WEB】15 银河麒麟操作系统下部署JSON2WEB
  • 【计算机网络】TCP三次握手,四次挥手以及SYN,ACK,seq,以及握手次数理解
  • Opencv之sift特征检测和FLANN 匹配器进行指纹特征匹配
  • StableDiffusion本地部署 3 整合包猜想
  • 2-3文件的属性信息
  • Pycharm中怎么加快下载三方包速度
  • Mplayer TUI增强设计:Linux命令行播放器的效率革命
  • 算法之数据结构
  • LangChain原理解析及开发实战指南(2025年最新版)
  • 基于SpringBoot的环保网站的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • 榆林网站建设哪家好/网址安全中心检测
  • 青岛天河小学网站建设/色盲怎么治疗
  • 做站群网站好优化吗/长沙seo优化排名
  • 湖南智能网站建设平台/618网络营销策划方案
  • 无锡做网站/做灰色词seo靠谱
  • 画图在什么网站上做兼职/线上广告平台