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

基于 GitHub Actions 端到端工程化落地——AI全栈项目实战案例

AI全栈项目实战案例一基于 GitHub Actions 端到端工程化落地案例定位项目名称AI Chat 全栈应用前端 ViteVue3 后端 Node.js AI 大模型接口调用 Docker 容器化 GitHub CI/CD 全自动流水线项目架构前后端分离 容器化部署 自动化测试/构建/镜像打包/多环境部署 MCP AI 流水线赋能适用场景个人/团队 AI 产品、企业内部 AI 问答助手、大模型私有化部署前端控制台整条链路覆盖代码管理 → 本地校验 → PR 门禁 → 自动化测试 → 构建打包 → Docker 镜像构建 → GHCR 制品仓库 → 测试环境自动部署 → 生产环境人工审批部署 → AI 代码审查MCP一、项目整体架构ASCII 拓扑图技术栈明细前端框架Vue3 ViteUIElement PlusAI 能力对接 OpenAI / 私有大模型 HTTP 接口测试Vitest 单元测试 Playwright E2E后端框架Node.js ExpressAI 服务大模型请求转发、会话上下文管理、权限校验测试Vitest 集成测试工程化部署代码管理GitHub Flow 分支策略CI/CDGitHub Actions容器Docker Docker Compose制品仓库GitHub Container RegistryGHCR部署前端 Vercel、后端 云服务器/Docker/K8sAI 增强MCP 协议接入 AI 做自动代码评审二、项目目录结构ai-fullstack-chat/ ├── frontend/ # 前端 ViteVue3 ├── backend/ # 后端 Node.js ├── docker/ # 各环境 Dockerfile │ ├── Dockerfile.frontend │ └── Dockerfile.backend ├── docker-compose.yml # 本地开发编排 ├── .github/ │ └── workflows/ │ ├── pr-check.yml # PR 代码检查测试门禁 │ ├── ci-build.yml # 构建镜像打包推送 │ └── deploy.yml # 多环境部署流水线 ├── playwright/ # E2E 测试用例 └── README.md三、代码管理规范GitHub Flow 落地分支规则main主干永远可部署保护分支禁止直接 Push功能分支feature/xxx、fix/xxx所有变更必须提PR → 代码审查 → CI 通过 → 合并 mainPR 强制门禁必须通过 ESLint 代码规范校验单元测试覆盖率 ≥75%Playwright 核心 E2E 用例全过至少 1 人 Code Review 通过MCP AI 自动评审无高危问题四、第一步本地提交校验Husky Lint-Staged1. 安装依赖npminstallhusky lint-staged eslint prettier commitlint/cli commitlint/config-conventional-D2. 配置 Git Hooksnpx huskyinstallnpx huskyadd.husky/pre-commitnpx lint-stagednpx huskyadd.husky/commit-msgnpx commitlint --edit$13. package.json 配置{lint-staged:{*.{js,ts,vue}:[eslint --fix,prettier --write],*.{json,md}:[prettier --write]},commitlint:{extends:[commitlint/config-conventional]}}作用本地拦截不规范代码、不合规提交信息从源头降低 CI 失败率。五、第二步PR 自动化检查流水线.github/workflows/pr-check.yml触发新建 PR、推送代码到 PR 自动执行包含代码格式化检查、类型检查、单元测试、E2E 轻量化测试name:PR Checkon:pull_request:branches:[main]types:[opened,synchronize,reopened]jobs:lint-and-test:runs-on:ubuntu-lateststrategy:matrix:dir:[frontend,backend]steps:-uses:actions/checkoutv4-name:Setup Nodeuses:actions/setup-nodev4with:node-version:20cache:npmcache-dependency-path:${{matrix.dir}}/package-lock.json-name:Install Depsworking-directory:./${{matrix.dir}}run:npm ci-name:Lint Codeworking-directory:./${{matrix.dir}}run:npm run lint-name:Unit Testworking-directory:./${{matrix.dir}}run:npm run test:unit六、第三步CI 构建 Docker 镜像打包 推送 GHCR文件.github/workflows/ci-build.yml触发合并到 main 分支自动执行流程前端构建产物 → 前后端 Docker 多阶段构建 → 推送镜像到 GitHub 容器仓库name:CI Build Push Imageon:push:branches:[main]jobs:build-and-push:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv4-name:Setup Docker Buildxuses:docker/setup-buildx-actionv3-name:Login to GHCRuses:docker/login-actionv3with:registry:ghcr.iousername:${{github.actor}}password:${{secrets.GITHUB_TOKEN}}# 后端镜像构建-name:Build Backend Imageuses:docker/build-push-actionv5with:context:./backendfile:./docker/Dockerfile.backendpush:truetags:ghcr.io/${{github.repository_owner}}/ai-chat-backend:${{github.sha}}cache-from:typeghacache-to:typegha,modemax# 前端镜像构建-name:Build Frontend Imageuses:docker/build-push-actionv5with:context:./frontendfile:./docker/Dockerfile.frontendpush:truetags:ghcr.io/${{github.repository_owner}}/ai-chat-frontend:${{github.sha}}cache-from:typeghacache-to:typegha,modemax七、第四步Dockerfile 多阶段构建最佳实践后端 docker/Dockerfile.backend# 构建阶段 FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 运行阶段 FROM node:20-alpine WORKDIR /app COPY --frombuilder /app/dist ./dist COPY --frombuilder /app/package*.json ./ RUN npm ci --onlyproduction EXPOSE 3000 CMD [node, dist/main.js]前端 docker/Dockerfile.frontend# 构建阶段 FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 运行阶段 Nginx FROM nginx:alpine COPY --frombuilder /app/dist /usr/share/nginx/html COPY docker/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD [nginx, -g, daemon off;]八、第五步本地开发 Docker Composedocker-compose.ymlversion:3.8services:frontend:build:context:./frontenddockerfile:../docker/Dockerfile.frontendports:-80:80depends_on:-backendbackend:build:context:./backenddockerfile:../docker/Dockerfile.backendports:-3000:3000environment:-AI_MODEL_URLhttps://api.openai.com/v1-AI_API_KEY${AI_API_KEY}本地一键启动docker-compose up -d九、第六步多环境自动部署流水线逻辑合并 main → 自动部署测试环境无需人工审批生产环境需在 GitHub Environments 设置人工审批后部署前端自动部署到 Vercel后端拉取 GHCR 镜像更新服务部署工作流核心片段name:Deployon:workflow_run:workflows:[CI Build Push Image]branches:[main]types:[completed]jobs:deploy-test:runs-on:ubuntu-latestenvironment:teststeps:-name:拉取镜像更新测试环境服务run:|docker-compose pull docker-compose up -ddeploy-prod:runs-on:ubuntu-latestenvironment:production# 配置人工审批needs:deploy-teststeps:-name:生产环境部署run:./deploy-prod.sh十、第七步MCP 协议 AI 赋能流水线自动代码评审能力自动读取 PR 变更代码基于 MCP 调用大模型自动输出代码漏洞、性能问题、AI 接口调用规范检查自动评论到 PR 评论区极简 MCP 接入 Action 配置name:AI Code Reviewon:[pull_request]jobs:ai-review:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv4-name:MCP AI 代码评审uses:./your-mcp-actionwith:model:claude-3.5github-token:${{secrets.GITHUB_TOKEN}}env:MCP_API_KEY:${{secrets.MCP_API_KEY}}十一、整条链路运行闭环总结开发者拉分支写 AI 前后端代码、本地 Git Hooks 自动校验提 PR → 自动触发 Lint/单元测试/E2E 测试CI 校验不通过直接阻止合并MCP AI 自动评审代码评审通过合并 main → 自动构建前后端 Docker 镜像镜像自动推送到 GHCR 制品仓库自动部署测试环境验证 AI 问答功能人工审批后部署生产前端 Vercel、后端容器服务更新全程无人工打包、无手动服务器登录发布十二、可直接复用价值你可以把这个案例直接作为AI 全栈项目工程化模板团队 GitHub CI/CD 标准流水线范本教学演示从代码到部署的完整 DevOps 流程后续扩展接入 K8s、监控告警、日志聚合、更多 AI MCP 能力

相关文章:

基于 GitHub Actions 端到端工程化落地——AI全栈项目实战案例

AI全栈项目实战案例一:基于 GitHub Actions 端到端工程化落地 案例定位 项目名称:AI Chat 全栈应用(前端 ViteVue3 后端 Node.js AI 大模型接口调用 Docker 容器化 GitHub CI/CD 全自动流水线) 项目架构:前后端分离…...

5分钟掌握AI视频分析:本地化智能处理完整教程

5分钟掌握AI视频分析:本地化智能处理完整教程 【免费下载链接】video-analyzer Analyze videos using LLMs, Computer Vision and Automatic Speech Recognition 项目地址: https://gitcode.com/gh_mirrors/vi/video-analyzer 面对数小时的视频素材&#xff…...

LinkSwift 技术架构深度解析:八大网盘直链下载助手的实现原理与实战指南

LinkSwift 技术架构深度解析:八大网盘直链下载助手的实现原理与实战指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中…...

Anolis OS 8.8 服务器环境搭建:从零搞定Nginx、Redis、JDK8和Tomcat9(附依赖包安装避坑指南)

Anolis OS 8.8 企业级环境部署实战:NginxRedisJDK8Tomcat9全栈指南 当一台全新的Anolis OS 8.8服务器摆在面前时,如何快速搭建稳定可靠的生产环境?作为国产操作系统的代表,Anolis OS在性能优化和安全性方面有着独特优势&#xff0…...

告别电脑格式化:在STM32F407上深度玩转FATFS的f_mkfs,实现SD卡自定义格式化

在STM32F407上精通FATFS的f_mkfs:从底层原理到SD卡性能调优 当你的嵌入式设备需要处理大量数据时,SD卡往往成为首选的存储介质。但你是否遇到过这样的困扰:随着使用时间的增长,SD卡的读写速度明显下降,甚至出现数据紊乱…...

终极解决方案:用easy-topo免费创建专业级网络拓扑图

终极解决方案:用easy-topo免费创建专业级网络拓扑图 【免费下载链接】easy-topo vuesvgelement-ui 快捷画出网络拓扑图 项目地址: https://gitcode.com/gh_mirrors/ea/easy-topo 还在为复杂的网络架构图而头疼吗?easy-topo是一款基于VueSVGElemen…...

从Web到桌面:用Electron+Vue3给你的网页套个“原生壳”,进程通信到底怎么玩?

从Web到桌面:ElectronVue3进程通信深度实战指南 1. 理解Electron的进程架构 Electron应用的核心在于其独特的进程模型设计。与传统的Web应用不同,Electron将Chromium的渲染进程和Node.js的主进程分离,这种架构既带来了强大的桌面集成能力&…...

AI驱动的代码库测绘工具Recon:为大型项目构建智能架构地图

1. 项目概述:AI驱动的代码库测绘工具如果你和我一样,每天都要面对动辄几千甚至上万个文件的代码库,那你肯定也经历过那种“迷失”的感觉。想了解一个模块的职责,得翻遍十几个目录;想重构一个功能,却不知道动…...

如何在现代Windows系统上完美运行经典游戏:DDrawCompat兼容性解决方案终极指南

如何在现代Windows系统上完美运行经典游戏:DDrawCompat兼容性解决方案终极指南 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.c…...

大模型评估:挑战、方法论与实践指南

1. 大模型评估的核心挑战与解决思路最近半年在参与多个大模型项目的评测工作,发现业界对LLM(大语言模型)的评估存在明显的认知断层。很多团队还在用传统NLP的评估指标(如BLEU、ROUGE)来衡量大模型的综合能力&#xff0…...

5分钟掌握智能订阅工具:RSSHub Radar浏览器扩展使用指南

5分钟掌握智能订阅工具:RSSHub Radar浏览器扩展使用指南 【免费下载链接】RSSHub-Radar 🧡 Browser extension that simplifies finding and subscribing RSS and RSSHub 项目地址: https://gitcode.com/gh_mirrors/rs/RSSHub-Radar RSSHub Radar…...

网盘直链下载终极解决方案:全平台免费高速下载的完整指南

网盘直链下载终极解决方案:全平台免费高速下载的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

缠论可视化终极指南:如何在通达信中快速部署免费分析插件

缠论可视化终极指南:如何在通达信中快速部署免费分析插件 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 对于每一个学习缠论的技术分析爱好者来说,最大的挑战莫过于如何将抽象的…...

Weaviate向量数据库实战:从核心原理到部署调优全解析

1. 项目概述:向量数据库的“瑞士军刀” 如果你最近在折腾大语言模型应用,或者想给自己的应用加上一个“聪明”的语义搜索功能,那你大概率已经听说过向量数据库了。在众多选择中,Weaviate 这个名字出现的频率越来越高。它不是一个…...

NBTExplorer终极指南:如何快速掌握Minecraft数据可视化编辑工具

NBTExplorer终极指南:如何快速掌握Minecraft数据可视化编辑工具 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer NBTExplorer是一款强大的开源图形化NBT…...

基于botctl构建自动化任务控制中心:插件化设计与工程实践

1. 项目概述:一个为自动化任务而生的命令行中枢如果你和我一样,日常工作中充斥着大量重复、繁琐的服务器维护、数据抓取、文件处理或者服务部署任务,那么你肯定不止一次地想过:“要是能有个统一的、可编程的‘开关’来控制所有这些…...

告别Matplotlib!用Qt和QCustomPlot在C++里打造实时数据监控界面(附完整源码)

告别Matplotlib!用Qt和QCustomPlot在C里打造实时数据监控界面(附完整源码) 在工业自动化、科学实验和嵌入式系统开发中,实时数据可视化一直是工程师面临的挑战。传统Python方案虽然生态丰富,但在性能敏感场景下往往力不…...

Godot可停靠面板插件:基于二进制树布局的模块化UI解决方案

1. 项目概述与核心价值如果你在Godot引擎里做过稍微复杂一点的编辑器工具或者游戏内UI,肯定遇到过这样的烦恼:用户想要自由拖拽、停靠、组合各种面板,比如一个地图编辑器里同时有图层面板、属性面板、资源浏览器和主视图。用Godot原生的TabCo…...

Flutter 三方库 SecureStorage 加密存储鸿蒙化适配与实战指南(加密读写+批量操作全覆盖)

Flutter 三方库 SecureStorage 加密存储鸿蒙化适配与实战指南(加密读写批量操作全覆盖) 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 哈喽大家好呀👋!我是一名上海高校大一计算机专业的学生…...

告别鼠标手!用AxGlyph画示意图,我只用键盘和滚轮(附图形微调秘籍)

告别鼠标手!用AxGlyph画示意图,我只用键盘和滚轮(附图形微调秘籍) 在数字绘图领域,长时间使用鼠标导致的腕管综合征已成为设计师、工程师和科研工作者的职业通病。当我们在AxGlyph中反复点击调整图形参数时&#xff0c…...

Flutter 三方库 Firebase Messaging 鸿蒙化适配与实战指南(权限检查+设备Token获取全覆盖)

Flutter 三方库 Firebase Messaging 鸿蒙化适配与实战指南(权限检查设备Token获取全覆盖) 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 哈喽各位小伙伴👋😆!我是来自上海的一名…...

基于MCP协议的智能邮件营销自动化:从协议解析到实战部署

1. 项目概述:当MCP遇上冷启动邮件营销如果你正在做B2B出海、SaaS推广或者任何需要主动触达潜在客户的业务,那么“冷启动邮件”绝对是你绕不开的课题。但这个过程有多痛苦,做过的都懂:手动一封封写,效率低下&#xff1b…...

揭秘印刷厂“黑科技”:手把手教你用JS脚本为Illustrator开发自动化刀版插件(附源码解析)

从零构建Illustrator刀版插件:JS脚本开发实战指南 在包装设计领域,刀版图是印刷工艺中不可或缺的一环。传统手工绘制刀版不仅耗时耗力,还容易因人为因素导致尺寸偏差。本文将带你深入探索如何利用JavaScript为Adobe Illustrator开发自动化刀版…...

HULL:用声明式配置重构Helm Chart开发,告别复杂模板

1. 项目概述:HULL,一个重新定义Helm Chart编写方式的库如果你和我一样,在Kubernetes的世界里摸爬滚打了好几年,用过、写过、也维护过不少Helm Chart,那你一定对那种感觉不陌生:每次要为一个新应用打包Chart…...

单目视频3D追踪技术:Track4World原理与实践

## 1. 项目概述:单目视频3D追踪的破局者在计算机视觉领域,从单目视频中恢复密集的3D运动一直是个经典难题。传统方法要么依赖复杂的多视角几何计算,要么需要预先训练的深度估计网络作为支撑。而Track4World提出了一种令人耳目一新的前馈式解决…...

开源AI编程助手用量监控器MeterBar:SwiftUI实现零配置实时监控

1. 项目概述:一个为AI编程助手打造的用量监控器如果你和我一样,日常开发重度依赖像Claude Code、Cursor这类AI编程助手,那你肯定也经历过那种“额度焦虑”——不知道今天还剩多少额度,生怕在关键时刻突然被限流。每次都要打开终端…...

视觉语言模型中问题框架对注意力机制的影响与优化

1. 项目背景与核心问题视觉语言模型(VLM)作为跨模态理解的重要工具,其性能表现与问题框架(Question Framing)的设计密切相关。我在处理医疗影像问答任务时发现,即使输入相同的图像内容,仅改变提…...

WorldCanvas:多模态可控世界事件生成框架解析

1. 项目概述:当AI学会"导演"世界事件WorldCanvas这个命名本身就充满想象力——它把整个世界当作一张画布,让开发者能够像导演一样编排各种事件。作为一个多模态提示下的可控世界事件生成框架,它本质上解决的是"如何让AI系统按…...

KL散度近似计算与Dropout扰动优化实践

1. 理解KL散度的本质与应用场景KL散度(Kullback-Leibler Divergence)作为衡量两个概率分布差异的重要工具,在机器学习领域扮演着关键角色。我第一次接触这个概念是在研究变分自编码器(VAE)时,当时对如何量化潜在空间分布与目标分布…...

Agent 一接导出中心就开始把旧报表当新结果:从 Export Job Claim 到 Artifact Freshness Fence 的工程实战

很多团队把 Agent 接进导出中心后,最危险的不是点不到按钮,而是导出成功却拿到旧报表。⚠️ 页面提示“任务完成”,目录里也出现了 report.xlsx,但它可能来自上一轮筛选、上一位租户,甚至上一个标签页的异步任务。 这类…...