qtcloud-devops-cli
DevOps CLI — 发布管理、契约检查与工作流自动化。
安装
前置依赖
- Python 3.12+
- Rust 工具链(
code子命令需要):rustup+cargo - libgit2:
sudo apt install libgit2-dev(Ubuntu)或brew install libgit2(macOS)
安装 CLI(release 命令)
安装 code 子命令(Rust 原生模块)
这会通过 maturin 自动编译 packages/code/ 下的 Rust crate。
验证安装
项目结构
apps/qtcloud-devops/src/cli/ ← Python CLI
├── app/
│ ├── cli.py # Typer 入口(release + code 子命令)
│ ├── code.py # Rust native 调用封装
│ ├── config.py # pydantic-settings 配置
│ └── release.py # 发布 Release 逻辑
├── packages/code/ ← Rust crate(maturin 构建)
│ ├── Cargo.toml
│ ├── pyproject.toml # maturin 构建配置
│ └── src/
│ ├── lib.rs # crate 入口
│ ├── main.rs # standalone CLI 入口
│ ├── python.rs # PyO3 绑定层
│ ├── model/mod.rs # SubmoduleStatus, RepoState
│ └── commands/
│ ├── mod.rs # SubmoduleEditor trait
│ └── editor.rs # GitSubmoduleEditor 实现
├── tests/
│ └── ...
├── pyproject.toml # setuptools 构建
├── AGENTS.md
├── CHANGELOG.md
├── ROADMAP.md
└── README.md
用法
release 命令
# 标签 + GitHub Release
# 仅标签
# 仅为已有标签补 GitHub Release
# 仅预检查
code 子命令
# 扫描子模块状态(三路 commit 比对 + 7 种状态分类)
# 同步子模块指针到父仓库
# 退役子模块(deinit + .gitmodules + index 清理)
发布流程
- 更新版本号 → 改
pyproject.toml - 写 CHANGELOG → 更新
CHANGELOG.md - 提交 →
chore: bump qtcloud-devops-cli to vX.Y.Z - 打 tag →
cli/vX.Y.Z - 推送 → CI 自动发布
命名约定
- 包名(PyPI):
qtcloud-devops-cli - 导入名:
app.* - 仓库 tag 前缀:
cli/