Release SOP
This document defines the release process for obsidian-admin-vue.
目标是确保 frontend 每次 release 都和 backend 契约、生成类型、GitHub Release 文案保持一致。
1. Pre-Release Rules
发布前先确认以下原则:
- release tag 只指向代码发布提交
- generated API files 必须与当前 backend 契约同步
main必须是绿色状态- working tree 必须干净
2. Prepare Release Content
在创建 tag 前,先完成这些内容:
- 更新
package.json版本号 - 更新:
CHANGELOG.md - 更新:
CHANGELOG.zh_CN.md - 准备当前版本 release note:
docs/releases/vX.Y.Z.md - 如有需要,更新:
docs/github/repository-metadata.md
3. Required Release Gates
在 frontend release 之前,必须确认以下命令全部通过:
bash
pnpm check
pnpm typecheck:api
pnpm test:unit
pnpm test:vue
pnpm build
pnpm test:preview
pnpm release:pairing vX.Y.Z说明:
pnpm typecheck:api是最关键的 release gate,因为它会校验生成类型是否已提交- 如果这一步失败,不要跳过,先同步并提交 generated API files
4. Contract Synchronization Rule
当 backend 有以下变更时,frontend release 前必须重新同步:
- OpenAPI 变更
- DTO 变更
- Resource 变更
- API contract snapshot 变更
同步命令:
bash
pnpm api:types需要重点确认的文件:
src/typings/api/openapi-generated.d.tssrc/typings/api/backend-generated.d.tssrc/service/api/generated
5. Check Repository State
确认当前仓库状态:
bash
git status --short
git log --oneline -3
git tag --list --sort=version:refname标准:
git status --short必须为空- 当前
HEAD必须是要发布的提交
6. Push Main First
先推送 main,再打 release tag:
bash
git push origin main原因:
- 让 CI 先对远端
main生效 - 避免 tag 指向一个远端还不存在的提交
7. Create Release Tag
创建 annotated tag:
bash
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z规则:
- 不要用 lightweight tag
- 如果当前 release 包含 contract-sync 修复,tag 必须落在同步后的提交上
8. Publish GitHub Release
在 GitHub 上创建 Release 时:
- Tag 选择:
vX.Y.Z - Title 使用:
docs/github/repository-metadata.md - Body 使用:
docs/releases/vX.Y.Z.md
自动发布 workflow 也遵循同一规则:
- 优先使用
docs/releases/vX.Y.Z.md - 只有在该文件缺失时,才回退到
CHANGELOG.md - release workflow 还会上传可下载 artifact:
- production app bundle
- demo preview bundle
- Pages bundle
- supply-chain workflow 会额外生成:
frontend-sbom-cyclonedx- frontend SBOM attestation
- frontend dist attestation
9. Update Repository Metadata
每次正式 release 前后,确认这些设置没有漂移:
- About
- Description
- Topics
- Branch protection
- Required status checks
- Actions permissions
BACKEND_REPO/BACKEND_REPO_TOKEN配置是否仍正确
参考:
docs/github/repository-setup-checklist.md
10. Post-Release Check
发布完成后,至少确认:
main和 tag 都已推送- GitHub Release 已可见
frontend-sbom-cyclonedxartifact 已生成,并在 push workflow 上有 attestation- GitHub Release 已附带 3 个可下载 bundle
Frontend Contract Gate没有因为 backend 契约拉取失败而报错- 当前 release note、changelog、package version 一致
11. Quick Checklist
发布当天只看这一段也够用:
- 更新
package.json版本 - 更新
CHANGELOG.md和CHANGELOG.zh_CN.md - 准备
docs/releases/vX.Y.Z.md - 跑
pnpm check - 跑
pnpm typecheck:api - 跑
pnpm test:unit && pnpm test:vue && pnpm build && pnpm test:preview - 跑
pnpm release:pairing vX.Y.Z - 确认工作区干净
- 推
main - 打 tag 并推
- 创建 GitHub Release
12. Final Sign-Off
For the last pre-release pass, use:
docs/release-final-checklist.md