Appearance
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 dev | jy-site 线上 |
|---|---|---|---|
| draft | 草稿 | 不显示 | 不显示 |
| published | 待发布 | 刷新 /blog 可见 | 需重新构建 |
| archived | 已归档 | 不显示 | 不显示 |
jy-site 查询条件统一为 status = 'published'(列表、详情、搜索、sitemap)。
管理端操作(给用户)
- 写好文章 → 点 保存(不是「保存草稿」)
- 确认列表/编辑页状态为 待发布
- 点顶栏 构建并部署
- 等待状态:排队中 → 构建中 → 已上线
- 硬刷新 https://jianyi.my
本地开发:jy-site pnpm dev 在 5175,保存为待发布后刷新 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/status → getLatestPublishRun() 查 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。
排查:构建成功但线上没文章
- 文章
status是否为published?(草稿不会进构建) - Actions 构建是否连到正确 MySQL?
- 是否硬刷新 / 清缓存?
- GitHub run 是否绿且 deploy 步骤未 skip?
排查:点构建没反应
- 设置页 GitHub Token 是否已配置?
- 服务器
.env是否有GITHUB_*且已 restart? - PAT 权限是否够(fine-grained: Contents RW)?
- 看
journalctl -u jy-admin是否有 API 错误
与旧行为的区别
| 旧行为 | 现行为 |
|---|---|
| 「发布」按钮自动触发构建 | 已移除 |
| 「发布后自动构建」设置开关 | 已移除 |
| 主按钮叫「发布」 | 叫「保存」,写入待发布 |
相关代码
| 文件 | 职责 |
|---|---|
jy-admin/components/ArticleEditorForm.tsx | 保存 / 保存草稿 |
jy-admin/components/PublishStatus.tsx | 构建并部署 + 轮询状态 |
jy-admin/lib/github.ts | trigger + getLatestPublishRun |
jy-site/.github/workflows/deploy-jy-site.yml | CI 构建部署 |