
Publish
Publish the Octop Python package: cut a release branch from develop, bump version...
Install
npx skills add TencentCloud/Octop --skill publish -g -a claude-code -y- Repository
- TencentCloud/Octop11.4k
- Category
- DevOps
- Updated
- 3d ago
- License
- MIT
- Context cost
- Mediumabout 2,264 tokens
- Runs scripts
- No, instructions only
What it does
Publish the Octop Python package: cut a release branch from develop, bump version, update CHANGELOG, open a PR to main; after merge, Actions tag on main (PyPI / Docker Hub + GHCR) and sync main into develop. Use when the user asks to publish, release, bump version, cut a release, or run /publish.
Publish
自动化 Octop Python 包的完整发布流程。
开始时宣告: "正在使用 publish 技能发布版本 {VERSION}。"
配置项
以下配置有默认值,可在项目的 .cursor/skills/publish/SKILL.md 中覆盖。
| 配置项 | 默认值 | 说明 |
|---|---|---|
CHANGELOG_FILE | CHANGELOG.md | 相对于仓库根目录的路径,文件不存在则跳过 |
VERSION_FILE | pyproject.toml | 包含版本号的文件 |
VERSION_PATTERN | ^\s*version\s*=\s*"[^"]+" | 匹配版本行的正则表达式 |
README_GLOB | README*.md | 含 shields.io 版本徽标的 README(含多语言变体,如 README.md、README_CN.md);全部同步升级 |
INIT_VERSION_FILE | src/octop/__init__.py | 含运行时常量 __version__ 的文件(缺失则跳过并提示) |
TAG_PREFIX | v | Git tag 前缀;工作流监听 v*,生成 v0.1.14 风格标签 |
REMOTE | origin | Git 远程仓库名 |
INTEGRATION_BRANCH | develop | 日常集成分支;release 必须从最新 tip 切出 |
TARGET_BRANCH | main | 合并请求的目标分支(生产真源) |
RELEASE_BRANCH_PREFIX | release/ | release 分支名前缀 |
调用方式
/publish 0.1.14
目标版本号是唯一必填参数,其余均从配置或自动检测获取。
发布流程
顺序硬约束: 先 PR 合入
main,再在 main tip 打并推送v*tag。
禁止在 release 分支未合入main前推送生产 tag。
步骤 1, 读取配置并确认版本
- 获取仓库根目录:
git rev-parse --show-toplevel - 记录当前分支为
{original_branch}。 git fetch {REMOTE} {INTEGRATION_BRANCH} {TARGET_BRANCH}- 从
VERSION_FILE读取当前版本(在即将基于的 integration tip 上):git show {REMOTE}/{INTEGRATION_BRANCH}:pyproject.toml | grep -E '^\s*version\s*=\s*"[^"]+"' - 检查未提交的更改:
若工作树不干净:中止并要求用户先提交或 stash。发布不得夹带无关脏文件。git status --short - 查找最近的 git tag:
如果没有 tag,视为首次发布(在步骤 3 中使用从仓库初始到 HEAD 的所有提交)。git tag --sort=-creatordate | head -1 - 展示确认信息:
当前版本 (pyproject.toml @ develop): X.Y.Z
目标版本: A.B.C
上次发布 tag: vX.Y.Z (YYYY-MM-DD)
Release 分支: release/A.B.C
集成起点: develop
合入目标: main
Tag 时机: main 合并之后(不会在 release 上先打 tag)
确认发布 X.Y.Z → A.B.C?[y/N]
如果用户未输入 y 确认,立即中止。

