← ClaudeAtlas

publish-releaselisted

当用户说发版/发布/release/publish/bump version/tag,或准备发布新版本时使用。自动检测 Git Flow(存在 develop)与 Trunk-based(无 develop)两种分支模型,走对应发版流程。
toRolex/rolex-skills · ★ 0 · Code & Development · score 75
Install: claude install-skill toRolex/rolex-skills
# Publish Release 自动检测仓库的分支模型并发布新版本:Git Flow 从 `develop` 切 release,Trunk-based 从 `main` 切 release。在 release branch 上升级版本号,向 `main` 开 PR,合并,为 `main` 打 tag;Git Flow 额外把 `main` 同步回 `develop`。 ## 前置条件 开始之前: - 你处于一个配置了 `origin` 的 git 仓库中。 - `gh` CLI 已安装并完成认证。 - `main` 是受保护分支;所有 release 通过 PR 合入。 - **flow**:`develop` 可以在本地合入以进行同步回写。如果 `develop` 也是受保护分支,则执行本 skill 直到 PR-to-main 步骤,然后单独从 `main` 向 `develop` 开一个 sync-back PR。 - **flow**:`develop` 包含了本次 release 所需的所有内容。 - **trunk**:开发直接落在 `main`,仓库没有 `develop` 分支;`main` 包含了本次 release 所需的所有内容。 - 用户已确认新版本号。默认是 patch bump(`+0.0.1`)。 ## 流程 ### 1. 检测分支模型 先确定仓库的分支模型,记为 `MODE`,后续步骤据此分支。用 `flow` 表示 Git Flow,用 `trunk` 表示 Trunk-based Development: ```bash git branch --all | grep -w 'develop' ``` - 本地或远端存在 `develop` 分支 → `MODE=flow`:从 `develop` 切 release branch,发版后同步回写 `develop`。 - 本地和远端均无 `develop` 分支 → `MODE=trunk`:开发直接落在 `main`,从 `main` 切 release branch,发版后**没有**同步回写步骤。 完成标志:已确定 `MODE` 为 `flow` 或 `trunk`。 ### 2. 确定新版本号 ```bash git tag --sort=-version:refname | head -3 ``` 以最新 tag 为基准,应用用户的 bump 规则,将新版本号记录为 `vX.Y.Z`。 完成标志:选定具体的 `vX.Y.Z`,如果与默认值不同则与用户确认。 ### 3. 检测版本文件 在仓库根目录中查找携带项目版本号的文件。按顺序检查: - `pyproject.toml` - `package.json` - `Cargo.toml` 记录哪些文件存在。至少必须存在一个。 完成标志:确定需要升级的版本文件列表。 ### 4. 同步源分支并创建 release branch 按 `MODE` 选择源分支,先通过 `/safe-pull` 确保其最新: - **flow**(源为 `develop`): ```bash git checkout develop # /safe-pull ``` - **trunk**(源为 `main`): ```bash git checkout main # /safe-pull ``` 然后创建 release branch: