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

别再数据线了!用FastAPI 分钟搭个局域网文件+剪贴板神器罕

为 HagiCode 添加 GitHub Pages 自动部署支持本项目早期代号为 PCode现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力让内容发布像喝水一样简单。背景/引言在 HagiCode 的开发过程中我们遇到了一个很现实的问题随着文档和提案越来越多如何高效地管理和展示这些内容成了当务之急。我们决定引入 GitHub Pages 来托管我们的静态站点但是手动构建和部署实在是太麻烦了——每次改动都要本地构建、打包然后手动推送到 gh-pages 分支。这不仅效率低下还容易出错。为了解决这个问题主要是为了偷懒我们需要一套自动化的部署流程。本文将详细记录如何为 HagiCode 项目添加 GitHub Actions 自动部署支持让我们只需专注于内容创作剩下的交给自动化流程。关于 HagiCode嘿介绍一下我们正在做的东西我们正在开发 HagiCode——一款 AI 驱动的代码智能助手让开发体验变得更智能、更便捷、更有趣。智能——AI 全程辅助从想法到代码让编码效率提升数倍。便捷——多线程并发操作充分利用资源开发流程顺畅无阻。有趣——游戏化机制和成就系统让编码不再枯燥充满成就感。项目正在快速迭代中如果你对技术写作、知识管理或者 AI 辅助开发感兴趣欢迎来 GitHub 看看目标分析在动手之前我们得先明确这次任务到底要干啥。毕竟磨刀不误砍柴工嘛。核心需求自动化构建当代码推送到 main 分支时自动触发构建流程。自动部署构建成功后自动将生成的静态文件部署到 GitHub Pages。环境一致性确保 CI 环境和本地构建环境一致避免本地能跑线上报错的尴尬。技术选型考虑到 HagiCode 是基于 Docusaurus 构建的一种非常流行的 React 静态站点生成器我们可以利用 GitHub Actions 来实现这一目标。配置 GitHub Actions 工作流GitHub Actions 是 GitHub 提供的 CI/CD 服务。通过在代码仓库中定义 YAML 格式的工作流文件我们可以定制各种自动化任务。创建工作流文件我们需要在项目根目录下的 .github/workflows 文件夹中创建一个新的配置文件比如叫 deploy.yml。如果文件夹不存在记得先手动创建一下。这个配置文件的核心逻辑如下触发条件监听 main 分支的 push 事件。运行环境最新版的 Ubuntu。构建步骤检出代码安装 Node.js安装依赖 (npm install)构建静态文件 (npm run build)部署步骤使用官方提供的 action-gh-pages 将构建产物推送到 gh-pages 分支。关键配置代码以下是我们最终采用的配置模板name: Deploy to GitHub Pages# 触发条件当推送到 main 分支时on:push:branches:- main# 可以根据需要添加路径过滤比如只有文档变动才构建# paths:# - docs/**# - package.json# 设置权限这对于部署到 GitHub Pages 很重要permissions:contents: readpages: writeid-token: write# 并发控制取消同一分支的旧构建concurrency:group: pagescancel-in-progress: falsejobs:build:runs-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkoutv4# 注意必须设置 fetch-depth: 0否则可能导致构建版本号不准确with:fetch-depth: 0- name: Setup Nodeuses: actions/setup-nodev4with:node-version: 20 # 建议与本地开发环境保持一致cache: npm # 启用缓存可以加速构建过程- name: Install dependenciesrun: npm ci# 使用 npm ci 而不是 npm install因为它更快、更严格适合 CI 环境- name: Build websiterun: npm run buildenv:# 如果你的站点构建需要环境变量在这里配置# NODE_ENV: production# PUBLIC_URL: /your-repo-name- name: Upload artifactuses: actions/upload-pages-artifactv3with:path: ./build # Docusaurus 默认输出目录deploy:environment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}runs-on: ubuntu-latestneeds: buildsteps:- name: Deploy to GitHub Pagesid: deploymentuses: actions/deploy-pagesv4实施过程中的坑点在实际操作中我们遇到了一些问题这里分享出来希望大家能避开或者提前准备好解决方案。1. GitHub Token 权限问题最开始配置的时候部署总是报错 403 (Forbidden)。查了好久才发现是因为 GitHub 默认的 GITHUB_TOKEN 并没有写入 Pages 的权限。解决方案在仓库的 Settings - Actions - General - Workflow permissions 中务必选择 Read and write permissions。2. 构建目录路径错误Docusaurus 默认把构建好的静态文件放在 build 目录。但是有些项目比如 Create React App 默认是 buildVite 默认是 dist可能配置不一样。如果在 Actions 中报错找不到文件记得去 docusaurus.config.js 里检查一下输出路径配置。3. 子路径问题如果你的仓库不是用户主页即不是 username.github.io而是项目主页比如 username.github.io/project-name你需要配置 baseUrl。在 docusaurus.config.js 中module.exports {// ...url: https://HagiCode-org.github.io, // 你的 GitHub URLbaseUrl: /site/, // 如果你的仓库叫 site这里就填 /site/// ...};这一点很容易被忽略配置不对会导致页面打开全是白屏因为资源路径加载不到。验证成果配置完所有东西并推送代码后我们就可以去 GitHub 仓库的 Actions 标签页看戏了。你会看到黄色的圆圈工作流正在运行变绿就代表成功啦如果变红了点击进去查看日志通常都能排查出问题大部分时候是拼写错误或者路径配置不对。构建成功后访问 https://你的用户名.github.io/仓库名/ 就能看到崭新的站点了。总结通过引入 GitHub Actions我们成功实现了 HagiCode 文档站的自动化部署。这不仅节省了手动操作的时间更重要的是保证了发布流程的标准化。现在不管是哪位小伙伴更新了文档只要合并到 main 分支几分钟后就能在线上看到最新的内容。核心收益效率提升从手动打包、手动上传变成代码即发布。降低错误消除了人为操作失误的可能性。体验优化让开发者更专注于内容质量而不是被繁琐的部署流程困扰。统吐众镣

相关文章:

别再数据线了!用FastAPI 分钟搭个局域网文件+剪贴板神器罕

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode,现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力,让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中,我们遇到了一个很现实的问…...

macos简单配置openclaw又

1 实用案例 1.1 表格样式生成 本示例用于生成包含富文本样式与单元格背景色的Word表格文档。 模板内容: 渲染代码: # python-docx-template/blob/master/tests/comments.py from docxtpl import DocxTemplate, RichText # data: python-docx-template/bl…...

c++ ffmpeg之提取视频数据保存到本地yuv文件(亲测好用)

#ifndef VIDEO_TO_YUV_H #define VIDEO_TO_YUV_H#include<QDebug> #include<QObject> #include<QThread> #include<QMutex> #include<QWaitCondition> #include<QImage>...

AI NLP核心技术指南

AI NLP核心技术指南...

AI神经网络基础概念技术指南

AI神经网络基础概念技术指南...

别再被照片骗了!从手机到单反,5分钟搞懂镜头畸变(附常见场景对比图)

别再被照片骗了&#xff01;从手机到单反&#xff0c;5分钟搞懂镜头畸变&#xff08;附常见场景对比图&#xff09; 每次拍完照片回看时&#xff0c;总觉得哪里不对劲——明明站得笔直的闺蜜在画面边缘变成了"香蕉人"&#xff0c;精心构图的城市天际线像被哈哈镜扭曲…...

3步打造纯净Windows 11:用Win11Debloat告别系统臃肿

3步打造纯净Windows 11&#xff1a;用Win11Debloat告别系统臃肿 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cust…...

为什么你的大模型上线后总出幻觉?:从血缘断链到推理失控的5层归因与实时修复指南

第一章&#xff1a;大模型工程化中的模型血缘追踪 2026奇点智能技术大会(https://ml-summit.org) 模型血缘追踪是保障大模型全生命周期可审计、可复现与可治理的核心能力。在持续训练、微调、量化、蒸馏与部署的多阶段工程实践中&#xff0c;同一基础模型可能衍生出数十个变体…...

专家 VS镜像视界:镜像视界算不算AI公司?

&#x1f3af; 标准反杀答案如果按传统分类&#xff0c;我们当然使用AI技术&#xff1b;但如果从系统本质来看—— 我们不属于“AI公司”&#xff0c;而属于“空间智能基础设施公司”。AI只是我们系统中的一个模块&#xff0c; 而不是系统的核心。&#x1f9e0; 进阶拆解① 承认…...

【最后72小时解锁】SITS2026联邦学习工作坊原始代码包+训练轨迹可视化Dashboard(含PyTorch/FedNLP/SecureAgg三框架适配版),错过再无官方授权分发

第一章&#xff1a;SITS2026演讲&#xff1a;大模型联邦学习应用 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026主会场&#xff0c;来自MIT与华为诺亚方舟实验室的联合团队展示了基于LLaMA-3架构的大模型联邦学习新范式——FedLLM。该方案突破传统参数平均&#x…...

镜像视界空间智能体系统的核心原理是否涉及人工智能技术?

一句话结论涉及人工智能&#xff0c;但本质不是AI系统。我们的核心是空间计算系统&#xff0c;AI只是其中一个工具层。&#x1f9e0; 分层拆解1️⃣ 底层&#xff1a;不是AI ——是空间几何计算系统最核心的能力是&#xff1a;空间反演&#xff08;Pixel → World&#xff09;多…...

为什么要做 GeoPipeAgent底

指令替换 项目需求&#xff1a;将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一&#xff0c;测试代码示例 test.c // test.c #includ…...

创业机会:AI Agent Harness Engineering 在垂直专业市场的 7 大爆点

创业机会:AI Agent Harness Engineering 在垂直专业市场的 7 大爆点 1. 引言:AI Agent 时代的到来 在人工智能技术快速发展的今天,我们正站在一个新时代的门槛上。从早期的规则引擎到如今的大语言模型(LLMs),AI技术已经取得了令人瞩目的进步。然而,真正的革命可能在于AI…...

网络连接故障 [2604] 终极排查指南:从浏览器设置到系统修复

1. 错误代码2604的根源解析 遇到浏览器弹出"无网络连接 请检查你的网络设置 然后重试 [2604]"的提示时&#xff0c;很多用户会下意识地反复刷新页面或重启路由器。但根据我处理这类问题的经验&#xff0c;90%的情况都与SSL/TLS协议配置有关。这个错误代码通常出现在W…...

深入解析ULN2003电机驱动器:从原理到实战应用

1. ULN2003电机驱动器基础解析 第一次接触ULN2003时&#xff0c;我完全被这个小小的芯片震撼到了——谁能想到这个比指甲盖还小的黑疙瘩&#xff0c;竟然能直接驱动继电器和步进电机&#xff1f;作为电子爱好者入门电机驱动的"启蒙老师"&#xff0c;ULN2003确实是个…...

GNSS差分码偏差(DCB)的实战应用与数据处理指南

1. GNSS差分码偏差&#xff08;DCB&#xff09;的核心概念解析 第一次接触DCB这个概念时&#xff0c;我也被各种专业术语绕得头晕。简单来说&#xff0c;你可以把DCB想象成GNSS信号在传输过程中产生的"指纹识别误差"。就像不同品牌的手机充电线给同一台设备充电时&am…...

ES6——编程风格

编程风格1、块级作用域1.1、Iet取代var1.2、全局常量和线程安全1.3、严格模式2、字符串3、解构赋值4、对象5、数组6、函数7、Map结构8、Class9、模块10、ESLint的使用1、块级作用域 1.1、Iet取代var ES6提出了两个新的声明变量的命令&#xff1a;let和const。其中&#xff0c…...

从源码到挂载:剖析NVIDIA Container Toolkit的GPU设备注入机制

1. 从零理解NVIDIA Container Toolkit的GPU挂载机制 第一次在容器里运行nvidia-smi命令时&#xff0c;那种"魔法般"的体验让我记忆犹新。明明宿主机上能正常使用的GPU设备&#xff0c;怎么在容器里就凭空出现了&#xff1f;这背后的秘密就藏在NVIDIA Container Toolk…...

SQL中JOIN类型选择的业务逻辑分析_根据业务需求选择连接

INNER JOIN 不能用于需保留主表所有记录的场景&#xff0c;如统计未下单用户&#xff1b;错误地在LEFT JOIN的WHERE中过滤右表字段会使其退化为INNER JOIN&#xff1b;RIGHT JOIN基本可被LEFT JOIN替代&#xff1b;FULL OUTER JOIN在MySQL中不支持&#xff0c;业务“并集”宜用…...

别只打补丁了!聊聊Oracle 11.2.0.4在Windows上维护的那些事儿:补丁管理、版本兼容与OPatch工具详解

Oracle 11.2.0.4 Windows环境下的补丁管理艺术&#xff1a;从基础操作到战略规划 在Oracle数据库运维领域&#xff0c;补丁管理往往被视为一项基础性工作&#xff0c;但实际上它远不止是简单的"下载-安装-重启"流程。特别是在Windows平台上运行的Oracle 11.2.0.4版本…...

CYBER-VISION零号协议入门指南:一键部署,开启智能助盲新篇章

CYBER-VISION零号协议入门指南&#xff1a;一键部署&#xff0c;开启智能助盲新篇章 1. 引言&#xff1a;当科技成为视障者的眼睛 想象一下&#xff0c;当你走在繁忙的街道上&#xff0c;眼前的世界突然变得模糊不清——路边的台阶、迎面而来的行人、突然出现的障碍物都成了潜…...

别再让扩展坞‘抢电’了!手把手教你用LDR6282 APP智能分配USB-C功率

别再让扩展坞“抢电”了&#xff01;LDR6282芯片智能功率分配全攻略 每次连接扩展坞时&#xff0c;笔记本电量不增反减&#xff1f;外接硬盘频繁断开&#xff1f;这些困扰专业用户的“功率焦虑”问题&#xff0c;根源在于传统扩展坞的固定功率分配机制。本文将深度解析基于LDR…...

TCP连接管理实战:从CLOSE_WAIT与TIME_WAIT的根源到系统级调优

1. 从线上故障说起&#xff1a;当端口耗尽成为压测拦路虎 去年双十一大促前&#xff0c;我们团队在对核心交易系统做全链路压测时&#xff0c;突然发现服务端出现大量"Address already in use"错误。监控面板上TCP连接数曲线像坐了火箭一样直线上升&#xff0c;短短1…...

Redis持久化:从AOF到RDB,如何实现数据不丢失?芈

Qt是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...

Windows优化神器:3步告别卡顿,让你的电脑飞起来

Windows优化神器&#xff1a;3步告别卡顿&#xff0c;让你的电脑飞起来 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhan…...

不只是部署:在 Windows 11 上用 Conda 玩转 KTransformers,深入对比 GGUF 与 Safetensors 模型加载的实战差异

在 Windows 11 上用 Conda 玩转 KTransformers&#xff1a;GGUF 与 Safetensors 模型加载的深度实战指南 当你已经成功在 Windows 11 上通过 Conda 环境部署了 KTransformers&#xff0c;接下来的问题往往是&#xff1a;如何根据不同的模型格式和硬件条件&#xff0c;选择最优的…...

别再只调API了!深入OpenCV手势识别:肤色检测算法全解析与实战对比(RGB/YCrCb/OTSU)

深入OpenCV手势识别&#xff1a;肤色检测算法全解析与实战对比 手势识别作为人机交互的重要技术&#xff0c;其核心挑战之一是如何在复杂环境中准确分割皮肤区域。本文将深入探讨四种主流肤色检测算法——RGB阈值法、椭圆模型法、CrCb范围筛选法以及OTSU自适应阈值法&#xff0…...

深度学习实战:用多尺度训练提升图像识别准确率(附TensorFlow代码)

深度学习实战&#xff1a;用多尺度训练提升图像识别准确率&#xff08;附TensorFlow代码&#xff09; 当你在街头用手机拍摄远处模糊的路牌时&#xff0c;是否好奇过AI如何识别不同尺寸的物体&#xff1f;这正是多尺度训练技术要解决的核心问题。在医疗影像分析中&#xff0c;从…...

R语言实战:用GEOquery和AnnoProbe搞定GEO芯片数据下载与ID转换(附避坑指南)

R语言实战&#xff1a;GEO芯片数据探针ID转换的深度解决方案与避坑实践 在生物信息学分析中&#xff0c;GEO数据库是研究者获取基因表达数据的金矿。但这座金矿的"矿石"——原始芯片数据&#xff0c;往往需要经过精细的"冶炼"过程才能转化为可分析的基因表…...

单片机I/O驱动与隔离电路的优化设计实践

1. 单片机I/O驱动电路设计的关键要点 我第一次接触单片机I/O驱动设计是在一个工业控制项目上&#xff0c;当时因为驱动电路设计不当导致整个系统频繁死机。后来才发现&#xff0c;I/O驱动电路就像单片机的"肌肉"&#xff0c;如果设计不好&#xff0c;再强大的"大…...