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

多模型场景下的成本治理指标体系郎

为 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 分支几分钟后就能在线上看到最新的内容。核心收益效率提升从手动打包、手动上传变成代码即发布。降低错误消除了人为操作失误的可能性。体验优化让开发者更专注于内容质量而不是被繁琐的部署流程困扰。瞻也缘蹈

相关文章:

多模型场景下的成本治理指标体系郎

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

IOFILE结构体的介绍与House of orange瓤

认识Pass层级结构 Pass范围从上到下一共分为5个层级: 模块层级:单个.ll或.bc文件 调用图层级:函数调用的关系。 函数层级:单个函数。 基本块层级:单个代码块。例如C语言中{}括起来的最小代码。 指令层级:单…...

、SEATA分布式事务——XA模式磺

MySQL 中的 count 三兄弟:效率大比拼! 一、快速结论(先看结论再看分析) 方式 作用 效率 一句话总结 count(*) 统计所有行数 最高 我是专业的!我为统计而生 count(1) 统计所有行数 同样高效 我是 count(*) 的马甲兄弟…...

Verilog 进阶学习指南:从入门到精通的必备书单(附资源)

1. Verilog学习路径规划:从菜鸟到高手的三个阶段 第一次接触Verilog时,我被那些看似天书般的模块声明和always块搞得晕头转向。后来在导师的指导下,才发现学习Verilog需要分阶段突破,就像打游戏升级一样要循序渐进。根据我十年带新…...

HDLbits实战解析系列2:Verilog模块化设计进阶与层次化实例精讲

1. Verilog模块化设计入门:从基础到实践 刚开始接触Verilog模块化设计时,很多人会觉得这个概念很抽象。其实模块化就像搭积木一样简单——把复杂电路拆分成多个独立的小模块,再通过接口把它们连接起来。我在最初学习时,经常把模块…...

SQUIRE: Leveraging Sequence-to-sequence Transformers for Robust Multi-hop Knowledge Graph Completion

1. 什么是SQUIRE框架? SQUIRE是一个基于序列到序列Transformer架构的创新性知识图谱补全框架。简单来说,它就像是一个专门为知识图谱设计的"翻译器"——把查询语句(比如"阿尔伯特的母语是什么?")转…...

uni-app中H5页面通过web-view跳转小程序的完整解决方案

1. 为什么H5页面跳转小程序会报错? 最近在做一个uni-app项目时,遇到了一个典型问题:在H5页面中通过web-view跳转小程序时,控制台报错"wx.miniProgram is undefined"或者"navigateTo is undefined"。这个问题困…...

AI 赋能 JS 逆向MCP+Skill+autoDecoder 全自动化落地加密自动Ai逆向

0x01 前言 随着各大开发的安全意识逐渐提高,前端防护手段越来越复杂,参数加密场景的越来越广泛,并且其生成逻辑往往经过多层混淆与封装,对我这种不具备深厚的代码功底和逻辑还原能力的小菜鸡来说倍感压力,人工逆向的方…...

AI时代的算法思维:大经典排序学习竞

引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...

gte-base-zh快速上手:Xinference框架下的文本嵌入模型部署实战

gte-base-zh快速上手:Xinference框架下的文本嵌入模型部署实战 1. 引言:认识gte-base-zh文本嵌入模型 文本嵌入技术是自然语言处理中的核心基础,它能够将文字转换为计算机可理解的数字向量。gte-base-zh作为阿里巴巴达摩院基于BERT框架训练…...

Windows10 Qt5.15.2环境下MINGW编译VTK-8.2.0的完整指南与常见问题解决

1. 环境准备与工具安装 在Windows10系统下用Qt5.15.2的MINGW编译VTK-8.2.0,首先需要准备好基础工具链。我去年在给医疗影像项目搭建三维可视化平台时就踩过不少坑,后来总结出这套稳定可靠的配置方案。 CMake的选择特别关键,实测3.14.0版本兼容…...

软件测试人员,别再贩卖AI焦虑了!

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中…...

SpringCloud微服务进阶-Nacos更加全能的注册中心劫

插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能,现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包,包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件&#xff0…...

NSudo完整指南:解锁Windows系统管理终极权限的5种方法

NSudo完整指南:解锁Windows系统管理终极权限的5种方法 【免费下载链接】NSudo [Deprecated, work in progress alternative: https://github.com/M2Team/NanaRun] Series of System Administration Tools 项目地址: https://gitcode.com/gh_mirrors/ns/NSudo …...

时间块工作法:编程专注力提升200%

在软件测试领域,专注力是高效工作的核心驱动力。测试从业者常面临多任务切换、需求变更频繁和干扰源众多的挑战,导致注意力分散、效率低下。时间块工作法(Time Blocking)作为一种科学的时间管理策略,通过将工作时间分割…...

Playwright CLI 使用指南 —— 现代浏览器自动化利器

Playwright CLI 使用指南 —— 现代浏览器自动化利器 Playwright CLI 是微软推出的命令行浏览器自动化工具,专为现代编码代理(Coding Agents)优化。它通过简洁的 CLI 命令暴露浏览器工作流,相比 MCP 协议更加 Token 高效&#xff…...

Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接劣

一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...

5个关键技巧:用InteractiveHtmlBom提升PCB设计效率300%

5个关键技巧:用InteractiveHtmlBom提升PCB设计效率300% 【免费下载链接】InteractiveHtmlBom Interactive HTML BOM generation plugin for KiCad, EasyEDA, Eagle, Fusion360 and Allegro PCB designer 项目地址: https://gitcode.com/gh_mirrors/in/Interactive…...

基于cruise的仿真模型搭建及效果分析:丰田氢能源车型在wltc工况下的跟随优势

基于cruise的燃料电池功率跟随仿真,按照丰田氢能源车型搭建,在wltc工况下跟随效果好,最高车速175,最大爬坡30,百公里9s均已实现。 1.模型通过cruise/simulink联合仿真,策略通过MATLAB/Simulink搭建的多点恒…...

全新RCLAMP3324T.TCT TVS二极管 Semtech 电子元器件 原装正品IC

Semtech推出的RCLAMP3324T.TCT 是由Semtech公司生产的一款高性能、低电容的四线ESD(静电放电)保护器件,它采用RailClamp专利架构,在超紧凑的SLP1710P4T封装内,实现了0.4pF超低电容与25kV接触/30kV空气放电顶级防护的完…...

终极指南:如何用Mousecape轻松定制你的macOS鼠标光标

终极指南:如何用Mousecape轻松定制你的macOS鼠标光标 【免费下载链接】Mousecape Cursor Manager for OSX 项目地址: https://gitcode.com/gh_mirrors/mo/Mousecape 你是否厌倦了macOS千篇一律的白色箭头光标?是否希望在工作时拥有更有个性、更醒…...

AI 时代:祛魅、适应与重新定义肝

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

AI开发-python-langchain框架(--自定义Tool )硕

起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧&#xff…...

探索DebToIPA核心技术:解密.deb到.ipa的架构突破与移动应用格式革命

探索DebToIPA核心技术:解密.deb到.ipa的架构突破与移动应用格式革命 【免费下载链接】DebToIPA Convert .deb apps to .ipa files, on iOS, locally 项目地址: https://gitcode.com/gh_mirrors/de/DebToIPA 在移动应用生态系统的技术演进中,跨平台…...

如何用Obsidian Projects解决碎片化知识管理难题:从笔记到项目的一站式解决方案

如何用Obsidian Projects解决碎片化知识管理难题:从笔记到项目的一站式解决方案 【免费下载链接】obsidian-projects Plain text project planning in Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-projects 你是否经常在Obsidian中积累了…...

深入解析Unity粒子系统Renderer模块:从基础渲染到高级光照控制

1. 粒子系统Renderer模块的核心作用 第一次接触Unity粒子系统时,我被Renderer模块里密密麻麻的参数吓到了。直到做了个烟花特效项目才发现,这个看似复杂的模块其实是让粒子"活起来"的关键。简单来说,它就像化妆师,决定…...

ETM vs. Abstract Model: Key Differences and Practical Applications in Hierarchical Design

1. ETM与Abstract Model基础概念解析 在芯片设计领域,随着设计规模越来越大,分层设计流程(hierarchy flow)已经成为主流方法。这种自底向上(bottom-up)的设计方式,先从模块级(block …...

【深度解析】Python异步编程:为何‘async with’必须安居于async函数之内?

1. 从报错案例看异步编程的门槛 那天我正在用aiohttp写一个简单的网络爬虫,代码看起来非常简洁: import aiohttpasync with aiohttp.ClientSession() as session:async with session.get(http://example.com) as response:print(await response.text())运…...

EcomGPT电商大模型效果展示:AI将‘V领收腰显瘦’转化为英文SEO友好描述

EcomGPT电商大模型效果展示:AI将‘V领收腰显瘦’转化为英文SEO友好描述 你是否曾为将一件“V领收腰显瘦”的连衣裙,翻译成能让海外消费者一眼心动、同时符合亚马逊搜索习惯的英文标题而头疼?传统的直译往往生硬,丢失了营销的灵魂…...

宝塔面板开机自启踩坑记:从手动重启到Systemd自动化,我总结了这几点经验

宝塔面板开机自启踩坑记:从手动重启到Systemd自动化实战指南 作为一名独立开发者,我永远忘不了那个凌晨三点被客户电话吵醒的夜晚——服务器意外重启后,宝塔面板没有自动恢复运行,导致所有网站服务瘫痪。这次惨痛经历让我下定决心…...