Files
dbtool-cli-v1/plans/2026-03-25-cli-release-smoke-baseline.md
Paperclip CTO 7424491944
Some checks failed
release-smoke / macos-13 / x86_64-apple-darwin (push) Has been cancelled
release-smoke / ubuntu-latest / x86_64-unknown-linux-gnu (push) Has been cancelled
release-smoke / windows-latest / x86_64-pc-windows-msvc (push) Has been cancelled
chore: bootstrap independent git workflow
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 03:49:29 +00:00

101 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# dbtool-cli-v1 CLI 发布与跨平台 smoke 基线
> Status: superseded on 2026-03-26 by `RELEASE_RUNBOOK.md` and `.github/workflows/release-smoke.yml`.
> This file captures the initial blocked-state plan and should not be treated as the current release implementation source of truth.
日期2026-03-25
作者Senior Backend Engineer
## 当前结论
- 当前仓库仅包含产品、QA、backlog 与架构计划文档,尚未落地 Rust workspace、`Cargo.toml`、CLI 可执行入口或任何可构建资产。
- 因此 `CMP-12` 当前不能直接实现“真实可运行”的发布流水线,必须先等待 `CMP-4` 交付最小可编译 CLI 基线。
- 同时,跨平台 smoke 的“有意义输入”还依赖 `CMP-13` 提供最小 fixtures / runbook否则只能做 `--help` 级别的空载校验。
## 当前领域与后端边界盘点
当前已共享、但尚未代码化的后端核心概念来自 `PRODUCT_REQUIREMENTS.md``plans/2026-03-25-dbtool-cli-v1-rust-architecture-plan.md`
- 连接目标:`DatabaseKind` + `ConnectionProfile`
- introspection 结果schema / table / column 元数据树
- 查询执行:`QueryRequest` / `QueryResult`
- 导出:`ExportRequest`
- 发布链路:`ReleaseArtifact` / checksum / smoke result
这些概念目前仍处于“规划已明确、实现尚未开始”的状态。
## 最小可行发布策略
`CMP-4` 完成后,发布链路先采用最小 CI matrix而不是复杂发布系统
### CI matrix
- `ubuntu-latest`
- `macos-latest`
- `windows-latest`
### 每个平台必须执行
1. 安装稳定 Rust toolchain
2. `cargo build --release`
3. 执行一次 CLI 基础 smoke
- `<binary> --help`
- 可选:`<binary> --version`
4. 打包 release artifact
5. 生成 SHA256 checksum
## 建议的 artifact 规则
在 CLI 名称最终确定前,先使用占位命名规则,避免后续分发混乱:
- Linux: `<cli-name>-<version>-x86_64-unknown-linux-gnu.tar.gz`
- macOS: `<cli-name>-<version>-x86_64-apple-darwin.tar.gz`
- Windows: `<cli-name>-<version>-x86_64-pc-windows-msvc.zip`
- checksum: `<artifact-name>.sha256`
如后续引入 ARM 构建,新增架构后缀,不复用旧命名。
## smoke 边界
当前阶段的 smoke 分两层:
### Level 1发布前置 smoke
- CLI 可启动
- `--help` 可返回 0
- `--version` 可读取(若已实现)
### Level 2功能 smoke
依赖 `CMP-13` 的最小 fixtures / runbook至少覆盖
- connect
- inspect
- query
- export
`CMP-13` 未完成前,不应把 Level 2 写成强制发布门槛。
## 回滚说明
V1 不涉及服务部署,回滚按“产物回滚”处理:
1. 保留上一个已验证 release artifact 与 checksum
2. 若新版本 smoke 失败或 QA 验收失败,停止分发新产物
3. 重新指向上一个可验证版本
4. 在发布记录中标注失败原因、影响平台、是否为构建问题或运行时问题
## 当前阻塞与依赖
- 主阻塞:`CMP-4` 未完成,当前不存在可编译 Rust workspace
- 次阻塞:`CMP-13` 尚在进行中,功能 smoke 输入未稳定
- 风险:若在 CLI 参数与二进制名未稳定前过早固化 workflow后续会出现大量仅因命名变化产生的流水线噪音
## 建议的后续执行顺序
1. `CMP-4` 先交付可编译 workspace 与可启动 CLI
2. 在仓库中落地 `.github/workflows/release-smoke.yml`
3. 先接入 `--help` / `--version` smoke
4.`CMP-13` 产出 fixtures 后,再把功能 smoke 接入 CI
5. 待命令面稳定后,再评估是否需要 `cargo-dist`