当前位置: 首页 > 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 nginxecho "自动部署完成"
      
    • 保存后,复制生成的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完成部署。

相关文章:

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

1. 宝塔面板配置Webhook 登录宝塔面板,进入「软件商店」→ 搜索「Webhook」并安装。添加Webhook: 名称:自定义(如 Gitee自动部署)脚本:编写部署脚本,示例如下:#!/bin/bash# 项目路径…...

什么是Agentic AI?(Doubao-1.5-pro-32k 大模型开启联网回答)

Agentic AI即代理式人工智能,也称为智能体AI、代理式AI、能动AI或自主AI(Autonomous AI),是人工智能领域的新兴概念。它是指被设计用来通过理解目标、导航复杂环境,并在最少的人工干预下执行任务的系统,能够…...

LSTM预测模型复现笔记和问题记录

LSTM复现笔记和问题记录 1 LSTM复现记录1.1 复现环境配置1.2 LSTM_Fly文件夹1.2.1 LSTM回归网络(1→1).py1.2.1.1 加载数据1.2.1.2 数据处理1.2.1.3 输入模型维度 1.2.2 移动窗口型回归(3→1).py1.2.2.1 数据处理1.2.2.2 输入模型维度 1.2.3 时间步长型回归(3→1).py1.2.3.1 数…...

开篇词 | Go 项目开发极速入门课介绍

欢迎加入我的训练营:云原生 AI 实战营,一个助力 Go 开发者在 AI 时代建立技术竞争力的实战营。实战营中包含大量 Go、云原生、AI Infra 相关的优质实战课程和项目。欢迎关注我的公众号:令飞编程,持续分享 Go、云原生、AI Infra 技…...

《论软件测试中缺陷管理及其应用》审题技巧 - 系统架构设计师

论软件测试中缺陷管理及其应用写作框架 一、考点概述 本论题“论软件测试中缺陷管理及其应用”主要考查的是软件测试领域中的缺陷管理相关知识与实践应用。论题涵盖了以下几个核心内容: 首先,需要理解软件缺陷的基本概念,即软件中存在的破坏正常运行能力的问题、错误或隐…...

虚拟机快照与linux的目录结构

虚拟机快照是对虚拟机某一时刻状态的完整捕获,包括内存、磁盘、配置及虚拟硬件状态等,保存为独立文件。 其作用主要有数据备份恢复、方便系统测试实验、用于灾难恢复以及数据对比分析。具有快速创建和恢复、占用空间小、可多个快照并存的特点。在管理维…...

FPGA时许约束与分析 1

1、时钟的基本概念 1.1 时钟定义: 同步设计:电路的状态变化总是由某个周期信号的变化进行控制的,在这个信号的 posedge 或者是 negedge 都可以作为电路状态的触发条件。 时钟:在同步设计中,这个信号 叫做时钟。 理…...

【STM32F103ZET6——库函数】6.PWM

目录 配置PWM输出引脚 使能引脚时钟 配置PWM 使能PWM 配置定时器 使能定时器时钟 使能定时器 例程 例程说明 main.h main.c PWM.h PWM.c led.h led.c DSQ.h DSQ.c 配置PWM输出引脚 PWM的输出引脚必须配置为复用功能。 注意:需要使用哪个引脚&…...

基于SpringBoot + Vue的商城购物系统实战

一:简介 使用springboot框架编写后端服务,并使用若依框架搭建管理端界面。在原有基础功能基础上有加入了人工客服、收货地址、智能助手(接入通义千问,暂时关闭)、抽奖功能、支付宝沙箱支付、优惠卷等功能。 目前已部…...

Perl 调用 DeepSeek API 脚本

向 chat.deepseek.com 提问:请将这个 python 脚本翻译为 perl 语言脚本 参阅:Python 调用 DeepSeek API 完整指南 将 Python 脚本翻译为 Perl 语言脚本时,需要注意两种语言之间的语法差异。以下是将给定的 Python 脚本翻译为 Perl 的版本&a…...

2025国家护网HVV高频面试题总结来了01(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 0x1 高频面试题第一套 0x2 高频面试题第二套 0x3 高频面试题第三套 0x4 高频面试题第四套 0x5 高频面…...

【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)

HTML结构 一个HTML包含以下部分&#xff1a; 文档类型声明html元素 head元素body元素 例&#xff08;CSDN&#xff09;&#xff1a; 一、文档类型声明 HTML最一方的文档称为&#xff1a;文档类型声明&#xff0c;用于声明文档类型。即&#xff1a;<!DOCTYPE html>…...

【前端场景题】如何应对页面请求接口的大规模并发问题

如何应对页面请求接口的大规模并发问题&#xff0c;尤其是前端方面的解决方案&#xff0c;并且需要给出详细的代码解释。首先&#xff0c;我需要仔细阅读我搜索到的资料&#xff0c;找出相关的信息&#xff0c;然后综合这些信息来形成答案。 首先看&#xff0c;它提到前端优化策…...

Sublime Text4安装、汉化

-------------2025-02-22可用---------------------- 官方网址下载&#xff1a;https://www.sublimetext.com 打开https://hexed.it 点击打开文件找到软件安装目录下的 ctrlf 查找 8079 0500 0f94 c2右边启用替换替换为:c641 0501 b200 90点击替换按钮 替换完成后 另存为本地…...

Python PDF文件拆分-详解

目录 使用工具 将PDF按页数拆分 将PDF的每一页拆分为单独的文件 将PDF按指定页数拆分 根据页码范围拆分PDF 根据指定内容拆分PDF 将PDF的一页拆分为多页 在日常生活中&#xff0c;我们常常会遇到大型的PDF文件&#xff0c;这些文件可能难以发送、管理和查阅。将PDF拆分成…...

MacDroid for Mac v2.3 安卓手机文件传输助手 支持M、Intel芯片 4.7K

MacDroid 是Mac毒搜集到的一款安卓手机文件传输助手&#xff0c;在Mac和Android设备之间传输文件。您只需要将安卓手机使用 USB 连接到 Mac 电脑上即可将安卓设备挂载为本地磁盘&#xff0c;就像编辑mac磁盘上的文件一样编辑安卓设备上的文件&#xff0c;MacDroid支持所有 Andr…...

人大金仓国产数据库与PostgreSQL

一、简介 在前面项目中&#xff0c;我们使用若依前后端分离整合人大金仓&#xff0c;在后续开发过程中&#xff0c;我们经常因为各种”不适配“问题&#xff0c;但可以感觉得到大部分问题&#xff0c;将人大金仓视为postgreSQL就能去解决大部分问题。据了解&#xff0c;Kingba…...

阿里云 Qwen2.5-Max:超大规模 MoE 模型架构和性能评估

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。 欢迎关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 一、引言 Qwen2.5-Max 是阿里云通义千问团队研发的超大规模 Mixture-of-Expert(MoE)模型,旨在通…...

C++ 标准库容器的常用成员函数

目录 C 标准库容器简介 通用成员函数 1. 大小相关 size() empty() max_size() 2. 元素访问 operator[] at(size_t n) front() back() 3. 修改容器 push_back(const T& value) pop_back() clear() insert() erase() 4. 迭代器相关 begin() end() rbegi…...

MySQL双主搭建-5.7.35

文章目录 上传并安装MySQL 5.7.35双主复制的配置实例一&#xff1a;172.25.0.19&#xff1a;实例二&#xff1a;172.25.0.20&#xff1a; 配置复制用户在实例 1 &#xff08;172.25.0.19&#xff09;上执行&#xff1a;在实例 2 &#xff08;172.25.0.20&#xff09;上执行&…...

通过用量看板清晰观测各模型API调用成本与消耗

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过用量看板清晰观测各模型API调用成本与消耗 效果展示类&#xff0c;介绍开发者在接入Taotoken后&#xff0c;如何通过平台提供的…...

18 CLIP 论文精读:ViT 如何走向图文多模态?(Learning Transferable Visual Models From Natural Language Supervision)

在前几篇文章中&#xff0c;我们围绕 ViT 的自监督预训练路线进行了连续梳理。MAE 的核心思想是&#xff1a;遮住大部分图像 patch&#xff0c;让模型重建被遮挡区域的像素。BEiT 的核心思想是&#xff1a;先用视觉 tokenizer 把图像转换成离散 visual token&#xff0c;再让模…...

Barlow字体:54种样式打造专业级设计效果,提升你的视觉表达力

Barlow字体&#xff1a;54种样式打造专业级设计效果&#xff0c;提升你的视觉表达力 【免费下载链接】barlow Barlow: a straight-sided sans-serif superfamily 项目地址: https://gitcode.com/gh_mirrors/ba/barlow Barlow是一款源自加州公共视觉美学的专业字体家族&a…...

My-TODOs:跨平台桌面待办清单,解放您的生产力

My-TODOs&#xff1a;跨平台桌面待办清单&#xff0c;解放您的生产力 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 在信息过载的今天&#xff0c;如何高效管理日常任务…...

STM32F407VET6现货

随着科技的发展&#xff0c;越来越多的应用场景需要更强大的处理能力、更丰富的外设支持以及更高的性价比。STM32F407VET6作为意法半导体&#xff08;STMicroelectronics&#xff09;旗下的一款高性能微控制器&#xff0c;在工业自动化、医疗设备、家用电器等多个领域展现出了卓…...

WeChatFerry微信机器人:3步打造你的AI智能助手

WeChatFerry微信机器人&#xff1a;3步打造你的AI智能助手 【免费下载链接】WeChatFerry 微信机器人&#xff0c;可接入DeepSeek、Gemini、ChatGPT、ChatGLM、讯飞星火、Tigerbot等大模型。微信 hook WeChat Robot Hook. 项目地址: https://gitcode.com/GitHub_Trending/we/W…...

手机上还有免费编辑pdf文本的软件?!

说的就是这款软件&#xff1a;pdfgear 适合哪些朋友&#xff1a;平板电脑、手机轻度办公用户。 这款软件算是为数不多良心软件了。 支持常见的pdf批注&#xff1a;高亮、删除线、下划线等。 主要还有一个很好的功能就是文字编辑功能&#xff1a;不需要切换word就能直接对pdf进行…...

快马AI:基于OpenAPI的JMeter压测脚本智能生成工具

1. 这不是“AI写脚本”&#xff0c;而是把压测工程师从重复劳动里彻底解放出来你有没有过这样的经历&#xff1a;凌晨两点&#xff0c;JMeter界面还开着&#xff0c;线程组参数调了第七遍&#xff0c;CSV数据文件改到第14版&#xff0c;正则提取器的括号又少打了一个反斜杠&…...

深入剖析Golang环境搭建:从基础配置到高效开发实践

1. 项目概述&#xff1a;为什么Golang环境搭建值得深究&#xff1f;如果你刚接触Go语言&#xff0c;可能会觉得“环境搭建”不就是下载、安装、配个变量吗&#xff1f;网上教程一搜一大把&#xff0c;五分钟搞定。但作为一名在多个生产环境中部署过Go服务的老兵&#xff0c;我必…...

嵌入式通用软件包ToolKit:跨平台模块化设计与工程实践

1. 项目概述&#xff1a;为什么我们需要一个“嵌入式通用软件包”&#xff1f;在嵌入式开发这个行当里摸爬滚打了十几年&#xff0c;我最大的感受就是“重复造轮子”和“碎片化”是效率的两大杀手。你想想看&#xff0c;是不是每个新项目启动&#xff0c;都得重新搭建一遍日志系…...