Charile Zhou
|
294241a7fd
|
perf(docker): 添加阿里云 Alpine 镜像源加速 apk 包下载
Deploy / Build and Push Images (push) Waiting to run
Deploy / Deploy to Knative (push) Blocked by required conditions
- 配置 mirrors.aliyun.com 替代官方源
- 加速 python3、make、g++ 等构建工具的下载
- 显著提升构建速度
|
2026-01-23 00:40:55 +08:00 |
|
Charile Zhou
|
839e321fb7
|
fix(docker): 重新添加构建工具以支持离线环境
问题:
- 构建环境无法访问 GitHub (connect ETIMEDOUT)
- bcrypt 无法下载预编译二进制,尝试从源代码编译
- 缺少 python3/make/g++ 导致编译失败
原因:
- 即使是 amd64 架构,在无法访问 GitHub 的离线环境下
- bcrypt 等 native modules 也需要构建工具作为 fallback
解决:
- 重新安装 python3、make、g++ 用于编译 native modules
- 仅在 base 阶段安装,最终 runner 镜像不包含这些工具
|
2026-01-23 00:40:18 +08:00 |
|
Charile Zhou
|
e08759b869
|
revert: 移除 Alpine 镜像源和构建工具配置
Deploy / Build and Push Images (push) Failing after 5m8s
Deploy / Deploy to Knative (push) Has been skipped
- 移除阿里云 Alpine 镜像源配置
- 移除 python3/make/g++ 构建工具安装
- 原��:仅构建 amd64 架构,bcrypt 可直接使用预编译二进制
- 简化 Dockerfile,减少镜像构建时间和体积
|
2026-01-23 00:33:42 +08:00 |
|
Charile Zhou
|
ad41866e88
|
revert: 移除多架构镜像构建配置
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
- 移除 platforms: linux/amd64,linux/arm64 配置
- 恢复为单架构构建(默认 linux/amd64)
- 原因:ARM64 构建时 apk ���发脚本在 QEMU 模拟环境下执行失败
|
2026-01-23 00:31:20 +08:00 |
|
Charile Zhou
|
f26cd1a739
|
perf(docker): 配置阿里云 Alpine 镜像源加速构建
Deploy / Build and Push Images (push) Failing after 1m53s
Deploy / Deploy to Knative (push) Has been skipped
- 使用阿里云 mirrors.aliyun.com 替代官方 dl-cdn.alpinelinux.org
- 显著加速 apk 包下载速度(python3, make, g++ 等)
- 对国内网络环境友好
|
2026-01-23 00:24:20 +08:00 |
|
Charile Zhou
|
9b24ef50d7
|
fix(docker): 安装构建工具支持 native modules 编译
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
问题:
- ARM64 架构编译时,bcrypt 无法从 GitHub 下载预编译二进制
- Alpine 镜像中缺少 Python 和编译工具,导致从源代码编译失败
解决方案:
- 在 base 阶段安装 python3、make、g++
- 这些工具在 deps/builder 阶段用于编译 native modules
- 最终 runner 镜像中不包含这些工具(已编译的二进制从中间镜像复制)
支持的架构:linux/amd64 和 linux/arm64
|
2026-01-23 00:19:33 +08:00 |
|
Charile Zhou
|
5ce21e2008
|
fix(docker): 修复 prod-deps 阶段 Prisma Client 生成失败
Deploy / Build and Push Images (push) Failing after 14m59s
Deploy / Deploy to Knative (push) Has been skipped
问题:
- prod-deps 阶段使用 --prod 安装时不包含 devDependencies
- pnpm db:generate 依赖 dotenv-cli 和 prisma(都是 devDependencies)
- 导致 "sh: dotenv: not found" 错误
解决方案:
- 先安装所有依赖(包括 devDependencies)
- 生成 Prisma Client
- 使用 pnpm prune --prod 删除 devDependencies
- 保持最终镜像体积最小化
|
2026-01-22 23:57:56 +08:00 |
|
Charile Zhou
|
0d6d6117ea
|
feat(ci): 添加多架构镜像构建支持
- 支持 linux/amd64 和 linux/arm64 架构
- 同时构建 Web 和 API 镜像的多架构版本
- Harbor 镜像仓库将存储 multi-platform manifest
|
2026-01-22 23:54:33 +08:00 |
|
Charile Zhou
|
f6670372a1
|
chore: 配置 Verdaccio npm 镜像源
- 添加 registry 配置指向内部 Verdaccio 镜像
- 保留原有的 peer dependencies 配置
- 统一开发和构建环境的包管理源
|
2026-01-22 23:49:09 +08:00 |
|
Charile Zhou
|
4e8b660213
|
refactor(docker): 简化镜像源配置,统一在 base stage 设置
Deploy / Build and Push Images (push) Failing after 2m39s
Deploy / Deploy to Knative (push) Has been skipped
- 移除无用的 npm config set(项目使用 pnpm)
- 在 base stage 统一设置 pnpm config,deps 和 prod-deps 自动继承
- 减少重复配置,代码更简洁
|
2026-01-22 23:42:53 +08:00 |
|
Charile Zhou
|
fd5efabd76
|
feat(docker): 使用内部 Verdaccio npm 镜像源
- 所有 npm registry 从 npmmirror.com 改为 verdaccio.tegical.world
- 包括 Corepack、npm 和 pnpm 的镜像源配置
- 完全隔离外网依赖,提升构建速度和稳定性
|
2026-01-22 23:40:53 +08:00 |
|
Charile Zhou
|
02f48c2955
|
fix(docker): 配置 Corepack 使用 npmmirror 下载 pnpm
Deploy / Build and Push Images (push) Failing after 4m40s
Deploy / Deploy to Knative (push) Has been skipped
- 添加 ENV COREPACK_NPM_REGISTRY 环境变量
- 解决 Corepack 仍然尝试从 registry.npmjs.org 下载 pnpm 的问题
- npm config 只影响 npm,Corepack 需要单独配置
|
2026-01-22 23:28:15 +08:00 |
|
Charile Zhou
|
76c03f95f1
|
feat(web): 添加 public 目录
Deploy / Build and Push Images (push) Failing after 4m7s
Deploy / Deploy to Knative (push) Has been skipped
- 创建 apps/web/public 目录用于存放静态资源
- 添加 .gitkeep 确保空目录被 Git 追踪
- 兼容 Dockerfile 中的 COPY public 指令
|
2026-01-22 23:08:15 +08:00 |
|
Charile Zhou
|
9a1285b4cc
|
fix(docker): 配置 npm 镜像源解决网络访问问题
Deploy / Build and Push Images (push) Failing after 3m6s
Deploy / Deploy to Knative (push) Has been skipped
- 配置 npm registry 为 https://registry.npmmirror.com
- 解决 Corepack 下载 pnpm 超时问题
- 配置 pnpm registry 加速依赖安装
- 应用于所有 stage (deps, prod-deps)
|
2026-01-22 23:00:37 +08:00 |
|
Charile Zhou
|
0201b5336e
|
feat(docker): 使用 Harbor 内部代理拉取 Node 镜像
Deploy / Build and Push Images (push) Failing after 1m51s
Deploy / Deploy to Knative (push) Has been skipped
- Node 镜像改为 harbor.tegical.world/docker.io/node:24.11.1-alpine
- 通过内部 Harbor 代理访问 Docker Hub,避免网络问题
- 提升镜像拉取速度和稳定性
|
2026-01-22 22:53:34 +08:00 |
|
Charile Zhou
|
b6b0c229ef
|
revert: 移除 Docker Buildx driver 配置
- 恢复使用默认的 docker-container driver
- 支持更完整的 BuildKit 特性
|
2026-01-22 22:50:42 +08:00 |
|
Charile Zhou
|
a83de0cc0d
|
ci: 配置 Docker Buildx 使用 docker driver
Deploy / Build and Push Images (push) Failing after 1m8s
Deploy / Deploy to Knative (push) Has been skipped
- 添加 driver: docker 配置
- 使用 Docker 原生构建器而非 docker-container
- 更简单轻量,适合标准构建场景
|
2026-01-22 22:47:20 +08:00 |
|
Charile Zhou
|
31ca44dbc3
|
refactor(docker): runner stage 复用 base 而非重新 FROM
Deploy / Build and Push Images (push) Failing after 1m29s
Deploy / Deploy to Knative (push) Has been skipped
- 将 runner stage 从 'FROM node:20-alpine' 改为 'FROM base'
- 统一版本管理,只需修改 base stage 一处
- 避免 base 和 runner 使用不同 Node 版本的风险
|
2026-01-22 22:41:05 +08:00 |
|
Charile Zhou
|
771920afbc
|
fix(docker): 对齐 Node 版本并简化 pnpm 配置
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
- Node 版本从 20 升级到 24.11.1,与 .nvmrc 保持一致
- 移除 corepack prepare pnpm@9,由 package.json 的 packageManager 字段管理
- Corepack 会自动读取 packageManager: "pnpm@9.15.2" 并使用
|
2026-01-22 22:39:48 +08:00 |
|
Charile Zhou
|
0a87cf8939
|
fix(docker): 移除 syntax 指令避免访问 Docker Hub
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
- 移除 Dockerfile 第一行的 syntax=docker/dockerfile:1
- 该指令会导致 BuildKit 尝试从 Docker Hub 拉取镜像
- 修复无法访问 Docker Hub 导致的构建失败问题
- 对于标准 Dockerfile 特性,此指令非必需
|
2026-01-22 22:38:15 +08:00 |
|
Charile Zhou
|
097658606b
|
refactor(ci): 直接使用 vars.IMAGE_REGISTRY 不通过 env 套一层
Deploy / Build and Push Images (push) Failing after 1m39s
Deploy / Deploy to Knative (push) Has been skipped
- 移除不必要的 env.REGISTRY 定义
- 所有引用直接使用 ${{ vars.IMAGE_REGISTRY }}
- 减少间接引用,代码更简洁直观
|
2026-01-22 22:35:09 +08:00 |
|
Charile Zhou
|
e394358946
|
fix(ci): 使用 vars 而非 secrets 访问 IMAGE_REGISTRY
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
- IMAGE_REGISTRY 配置为 repository variable 而非 secret
- 使用 ${{ vars.IMAGE_REGISTRY }} 替代 ${{ secrets.IMAGE_REGISTRY }}
|
2026-01-22 22:33:43 +08:00 |
|
Charile Zhou
|
7889037b0e
|
feat(ci): 集成 Harbor 镜像仓库
Deploy / Build and Push Images (push) Failing after 1m1s
Deploy / Deploy to Knative (push) Has been skipped
- 使用 secrets.IMAGE_REGISTRY 配置仓库地址
- 使用 Harbor Robot 账号进行镜像推送认证
- Knative Service 添加 harbor-registry-secret 拉取认证
- 支持动态替换镜像仓库地址和标签占位符
|
2026-01-22 22:31:21 +08:00 |
|
Charile Zhou
|
45e3542558
|
Revert "perf(ci): 使用 Kubernetes 内部 Service 加速镜像推送"
Deploy / Build and Push Images (push) Failing after 1m1s
Deploy / Deploy to Knative (push) Has been skipped
This reverts commit af159b6b4f.
|
2026-01-22 22:12:05 +08:00 |
|
Charile Zhou
|
af159b6b4f
|
perf(ci): 使用 Kubernetes 内部 Service 加速镜像推送
Deploy / Build and Push Images (push) Failing after 45s
Deploy / Deploy to Knative (push) Has been skipped
- 使用 gitea-http.infra.svc.cluster.local:3000 替代外部域名
- 避免流量经过外部网络,提升推送速度
- 配置 BuildKit 支持 HTTP insecure registry
- 同一集群内部通信,延迟更低
|
2026-01-22 22:07:22 +08:00 |
|
Charile Zhou
|
6323f6b361
|
fix(ci): 修复 Docker 登录认证变量
- 使用 github.actor 替代 gitea.actor
- 使用 secrets.GITHUB_TOKEN 替代 secrets.GITEA_TOKEN
- Gitea Actions 为兼容 GitHub Actions 使用相同的上下文命名
|
2026-01-22 22:04:40 +08:00 |
|
Charile Zhou
|
1a921c725e
|
ci: 使用 Gitea 内置认证变量替代手动配置的 Secrets
Deploy / Build and Push Images (push) Failing after 59s
Deploy / Deploy to Knative (push) Has been skipped
- 工作流配置改用 gitea.actor 和 GITEA_TOKEN
- 更新部署文档,移除镜像仓库凭证配置说明
- 添加手动部署的 docker login 步骤
|
2026-01-22 21:56:34 +08:00 |
|
|
|
48aaea7773
|
Merge pull request 'test/ci-workflow' (#7) from test/ci-workflow into main
Deploy / Build and Push Images (push) Failing after 1m41s
Deploy / Deploy to Knative (push) Has been skipped
Reviewed-on: #7
Reviewed-by: gitea_admin <gitea@local.domain>
|
2026-01-22 10:36:57 +00:00 |
|
charilezhou
|
a632d48590
|
ci: 移除 pnpm 缓存配置
CI / Build Check (pull_request) Successful in 2m10s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 18:22:07 +08:00 |
|
charilezhou
|
e98c726796
|
fix(ci): 使用 .nvmrc 和 packageManager 配置版本
CI / Build Check (pull_request) Successful in 2m21s
- Node.js 版本从 .nvmrc 读取
- pnpm 版本从 package.json 的 packageManager 字段读取
- 移除硬编码的版本号
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 18:19:41 +08:00 |
|
charilezhou
|
c5e08b5632
|
ci: 使用 registry 缓存替代 gha 缓存
CI / Build Check (pull_request) Failing after 1m28s
Docker 构建缓存改为存储在镜像仓库中,兼容 Gitea Actions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 18:17:13 +08:00 |
|
charilezhou
|
a82144a676
|
ci: 移除容器配置,改为 Runner 级别配置
CI / Build Check (pull_request) Failing after 4m51s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 18:08:57 +08:00 |
|
charilezhou
|
a211da4468
|
ci: 添加 pnpm 依赖包缓存配置
CI / Build Check (pull_request) Failing after 33s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 18:02:26 +08:00 |
|
charilezhou
|
9c93e324dd
|
fix(ci): 添加容器镜像配置解决 Node.js 缺失问题
CI / Build Check (pull_request) Failing after 25s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 18:00:41 +08:00 |
|
charilezhou
|
fbe88764e5
|
ci: 移除手动触发配置
CI / Build Check (pull_request) Failing after 1m18s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 17:50:46 +08:00 |
|
charilezhou
|
42501148b9
|
ci: 添加手动触发支持
CI / Build Check (pull_request) Failing after 4m43s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 17:45:45 +08:00 |
|
charilezhou
|
08bd6397c8
|
ci: 添加 Gitea Actions CI/CD 和 Knative 部署配置
- 添加 CI workflow(PR 构建检查)
- 添加 Deploy workflow(main 分支自动部署)
- 添加 Web/API 多阶段 Dockerfile
- 添加 Knative Service 配置(自动扩缩容)
- 添加 K8s ConfigMap、Secret、Namespace 配置
- 添加 .dockerignore 优化构建
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 17:38:28 +08:00 |
|
charilezhou
|
595d59ab5b
|
chore: 将 next-env.d.ts 加入 .gitignore
该文件由 Next.js 自动生成,不应纳入版本控制。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 18:24:38 +08:00 |
|
charilezhou
|
5c1a998192
|
feat(web): 实现自定义主题功能
支持 6 套预设主题(默认、海洋、森林、日落、玫瑰、紫罗兰)和自定义主色色相滑块,
通过动态注入 CSS 变量实现主题切换,使用 localStorage 持久化存储,
添加 SSR 初始化脚本避免首次加载颜色闪烁。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 18:22:22 +08:00 |
|
charilezhou
|
ad847f1e4c
|
refactor(web): 将刷新权限缓存功能移至系统设置
- 新增 PermissionSettings 组件
- 从个人中心页面移除刷新权限缓存功能
- 在系统设置页面添加权限缓存设置卡片
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 17:32:24 +08:00 |
|
charilezhou
|
3943bd112f
|
docs: 更新 OIDC Provider 文档并完善环境配置
文档更新:
- 从"实施方案"改为"实施文档",标记为已完成状态
- 添加快速开始章节,提供完整的使用示例
- 补充第一方应用自动授权的两种场景实现细节
- 补充 Grant Scope 存储的 payload 结构说明
- 新增客户端服务章节(cuid2 ID + 随机密钥)
- 更新关键文件清单(后端/前端/共享类型)
环境配置:
- 添加 FRONTEND_URL 配置
- 添加 OIDC Provider 开发环境配置
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 17:29:26 +08:00 |
|
charilezhou
|
90513e8278
|
feat: 实现完整的 OIDC Provider 功能
- 后端:基于 node-oidc-provider 实现 OIDC Provider
- 支持 authorization_code、refresh_token、client_credentials 授权类型
- Redis adapter 存储会话数据,Prisma adapter 存储持久化数据
- 客户端管理 CRUD API(创建、更新、删除、重新生成密钥)
- 交互 API(登录、授权确认、中止)
- 第一方应用自动跳过授权确认页面
- 使用 cuid2 生成客户端 ID
- 前端:OIDC 客户端管理界面
- 客户端列表表格(支持分页、排序)
- 创建/编辑弹窗(支持所有 OIDC 配置字段)
- OIDC 交互页面(登录表单、授权确认表单)
- 共享类型:添加 OIDC 相关 TypeScript 类型定义
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 17:22:32 +08:00 |
|
charilezhou
|
8db25538d4
|
docs: 添加 OIDC Provider 实施方案文档
- 基于 panva/node-oidc-provider 的完整实施方案
- 混合存储策略:PostgreSQL(Client、Grant、RefreshToken)+ Redis(短期令牌)
- 前端采用 SSR + Server Actions,独立路由组 (oidc)
- 包含 Prisma 模型、适配器、控制器、前端页面等完整设计
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 11:02:48 +08:00 |
|
charilezhou
|
66cce5a765
|
feat(api): health 接口添加 storage 服务监控
- StorageService 添加 healthCheck 方法
- 健康检查响应增加 storage 状态
- 更新共享类型定义
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 10:37:33 +08:00 |
|
charilezhou
|
140c268412
|
fix(web): 切换账号后权限缓存不刷新问题
- 登录/注册成功时先清除旧的权限缓存
- 确保切换账号后重新加载新账号的权限数据
feat(web): 系统状态接入真实 health API
- 新增 health.service.ts 调用后端健康检查接口
- 新增 useHealth hook,每 30 秒自动刷新
- DashboardStats 显示真实健康状态(正常/部分异常/异常)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 10:35:15 +08:00 |
|
charilezhou
|
e7496ed41b
|
docs: 更新 CLAUDE.md 补充权限系统和代码生成器说明
新增内容:
- pnpm generate 代码生成命令
- 前端权限控制(PermissionGuard 组件、usePermissionStore)
- 后端权限控制(@RequirePermission 装饰器、PermissionModule)
- 代码生成器生成内容说明
- DataTable 通用组件说明
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 20:50:23 +08:00 |
|
charilezhou
|
2aa992c88d
|
docs(plop): 更新 README 文档
新增内容:
- 服务类型说明(CrudService/RelationCrudService/ManyToManyCrudService)
- 关系配置 DSL 语法(一对多/多对一/多对多)
- 种子脚本生成和执行说明
- 权限控制说明(@RequirePermission + PermissionGuard)
- 新增模板文件(page.hbs、module-seed.hbs)
- Helpers 完整列表(含 openBrace/closeBrace)
- FAQ 扩展(QueryDto 生成、JSX 花括号、种子脚本)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 20:46:50 +08:00 |
|
charilezhou
|
695f34bc3d
|
refactor(plop): QueryDto 始终生成并在 controller 中使用
- dto.hbs: 移除 hasQueryDto 条件,始终生成 QueryDto 类
- controller.hbs: 始终导入使用 QueryDto 而非 PaginationQueryDto
- hasQueryDto 现只控制是否提取查询字段,不影响类型声明
便于后续扩展查询参数,无需修改 controller 导入
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 20:39:33 +08:00 |
|
charilezhou
|
1d204647fd
|
feat(plop): 代码生成器改进
- Table 模板添加 error 状态渲染支持
- Controller 模板统一使用 PATCH 方法(update 和 restore)
- 修复 edit-dialog 模板花括号输出问题,添加 openBrace/closeBrace helper
- 简化 Table 模板的 refetch 逻辑
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 20:28:39 +08:00 |
|
charilezhou
|
1b84aff71a
|
feat: DataTable 错误状态支持和 403 页面退出登录
- DataTable 组件添加 error 和 onRetry 属性,支持错误状态渲染
- 新增 Alert 组件(shadcn/ui 风格)
- 403 页面添加重新登录按钮,方便权限更新后刷新缓存
- auth.ts 退出登录时同时清除权限缓存
- CrudService restore 方法修复:显式指定 deletedAt 条件绕过软删除过滤
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 20:28:15 +08:00 |
|