Skip to content

完善 CI:使用 pgvector 并部署对应提交的 Web 产物 - #2

Merged
YouRen1320 merged 1 commit into
mainfrom
codex/blog-ci-artifact-deploy
Sep 7, 2026
Merged

YouRen1320 merged 1 commit into
mainfrom
codex/blog-ci-artifact-deploy

Conversation

@YouRen1320

@YouRen1320 YouRen1320 commented Sep 7, 2026

Copy link
Copy Markdown
Owner

依赖关系

这是堆叠式 PR,临时以 #1 的分支为基线,让新流水线能够同时验证管理员初始化改动。合并顺序为:先合并 #1,再把本 PR 的基线改为 main 后合并。

目标

修复 CI 测试数据库与迁移要求不一致的问题,并保证生产部署使用“同一次检查、同一个 commit”生成的 Nuxt 产物。Pull Request 只运行检查,绝不触发生产部署。

主要改动

  • 所有 Pull Request 和 main push 都运行 API、Admin、Web 与 AI 服务检查
  • CI 数据库改为固定摘要的 pgvector/pgvector:pg16,支持现有 vector 迁移
  • 增加 API 构建与管理员初始化代码检查
  • Web 构建后按 commit SHA 打包 .output、生成 SHA-256,并作为 Actions Artifact 保存 14 天
  • 部署任务只允许 main 的 push 触发,并依赖所有检查成功
  • 部署任务下载同一次运行的 Artifact,通过固定 SHA 的 SCP/SSH Action 传输
  • 强制提供 SSH 主机指纹,拒绝缺失的生产部署配置
  • 服务器校验产物后检出同一个 commit;已跟踪文件有本地改动时安全失败
  • 使用临时目录替换 .output,保留 .output.previous,并通过 Compose --wait 等待健康状态
  • 移除原先的 git reset --hard、固定等待和自动清理镜像
  • README 增加迁移、影响和回滚说明

已验证

  • GitHub Actions API、Admin 与 Web:通过(1 分 22 秒)
  • GitHub Actions AI 服务:通过(50 秒)
  • GitHub Actions 部署生产环境:在 Pull Request 中按预期跳过
  • 远端 Artifact:web-output-c3c085bba9ea49634efd37b4b89459a771273b6e 已生成,下载后 SHA-256 校验通过,包含 .output/server/index.mjs
  • actionlint 1.7.12:本工作流通过
  • 本机 Nuxt 生产构建:通过
  • 本机 Web 产物打包、SHA-256 校验、解压及入口文件检查:通过
  • 使用该 .output 构建 Web Docker 镜像并检查镜像入口文件:通过
  • 本机 Docker Compose 2.39.4 支持 up --wait

影响与迁移

合并前需在 GitHub production Environment 配置 SERVER_HOSTSERVER_USERSSH_PRIVATE_KEYSERVER_DEPLOY_DIR,并新增 SERVER_SSH_FINGERPRINT。服务器需使用支持 up --wait 的 Docker Compose,部署目录中的已跟踪改动必须先处理。

原来的手动 workflow_dispatch 入口有意移除。服务器 Git 工作树会以 detached HEAD 方式停在实际部署 SHA,不再假定本地 main 就代表已部署版本。

回滚

优先 revert 问题提交并推送 main,让流水线生成并部署回退提交自己的产物。服务器另保留上一份 .output.previous 和按 SHA 存放的传输产物,供流水线不可用时人工恢复。数据库迁移不承诺可逆,涉及数据库结构时必须配合已有备份/恢复流程。

本次明确不做

  • 不从此 PR 执行生产部署
  • 不读取或修改生产 Secret
  • 不修改生产数据库
  • 不引入镜像仓库、Kubernetes 或新的部署平台
  • 不顺带清理仓库现有的全量 ESLint 债务
  • 不修改 GitHub Environment/分支保护等仓库设置

Base automatically changed from codex/blog-admin-bootstrap to main September 7, 2026 12:23
@YouRen1320
YouRen1320 merged commit 4dac6da into main Sep 7, 2026
3 checks passed
@YouRen1320
YouRen1320 deleted the codex/blog-ci-artifact-deploy branch September 7, 2026 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant