Skip to content

JY 内容发布链路

端到端流程

text
1. jy-admin 编辑文章
2. 「保存草稿」→ status=draft(线上永远不显示)
   「保存」     → status=published(UI 显示「待发布」)
3. 顶栏「构建并部署」→ POST /api/publish
4. jy-admin 调 GitHub repository_dispatch (jy-site-publish)
5. jy-site Actions: build:static + scp → /opt/web/jysite
6. 用户访问 https://jianyi.my 看到新文章

保存不会触发构建。 只有「构建并部署」会。

文章状态

DB status管理端显示jy-site devjy-site 线上
draft草稿不显示不显示
published待发布刷新 /blog 可见需重新构建
archived已归档不显示不显示

jy-site 查询条件统一为 status = 'published'(列表、详情、搜索、sitemap)。

管理端操作(给用户)

  1. 写好文章 → 点 保存(不是「保存草稿」)
  2. 确认列表/编辑页状态为 待发布
  3. 点顶栏 构建并部署
  4. 等待状态:排队中 → 构建中 → 已上线
  5. 硬刷新 https://jianyi.my

本地开发:jy-site pnpm dev5175,保存为待发布后刷新 http://127.0.0.1:5175/blog 即可(无需构建)。

触发构建的技术路径

PublishStatus.tsx → POST /api/publish
  → lib/github.ts triggerSitePublish()
  → GitHub API repository_dispatch
  → jy-site/.github/workflows/deploy-jy-site.yml
  → build-static.ts → scp → 服务器

管理端读构建状态:GET /api/publish/statusgetLatestPublishRun() 查 Actions 最近 run。

管理端所需 env

env
GITHUB_REPOSITORY=jianyi241/jy-site
GITHUB_TOKEN=<PAT with repo or Contents RW>

本地和服务器 /opt/web/jy-admin/.env 都要有;改后 systemctl restart jy-admin

排查:构建成功但线上没文章

  1. 文章 status 是否为 published?(草稿不会进构建)
  2. Actions 构建是否连到正确 MySQL?
  3. 是否硬刷新 / 清缓存?
  4. GitHub run 是否绿且 deploy 步骤未 skip?

排查:点构建没反应

  1. 设置页 GitHub Token 是否已配置?
  2. 服务器 .env 是否有 GITHUB_* 且已 restart?
  3. PAT 权限是否够(fine-grained: Contents RW)?
  4. journalctl -u jy-admin 是否有 API 错误

与旧行为的区别

旧行为现行为
「发布」按钮自动触发构建已移除
「发布后自动构建」设置开关已移除
主按钮叫「发布」叫「保存」,写入待发布

相关代码

文件职责
jy-admin/components/ArticleEditorForm.tsx保存 / 保存草稿
jy-admin/components/PublishStatus.tsx构建并部署 + 轮询状态
jy-admin/lib/github.tstrigger + getLatestPublishRun
jy-site/.github/workflows/deploy-jy-site.ymlCI 构建部署

JY 项目文档