Skills

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_FILECHANGELOG.md相对于仓库根目录的路径,文件不存在则跳过
VERSION_FILEpyproject.toml包含版本号的文件
VERSION_PATTERN^\s*version\s*=\s*"[^"]+"匹配版本行的正则表达式
README_GLOBREADME*.md含 shields.io 版本徽标的 README(含多语言变体,如 README.md、README_CN.md);全部同步升级
INIT_VERSION_FILEsrc/octop/__init__.py含运行时常量 __version__ 的文件(缺失则跳过并提示)
TAG_PREFIXvGit tag 前缀;工作流监听 v*,生成 v0.1.14 风格标签
REMOTEoriginGit 远程仓库名
INTEGRATION_BRANCHdevelop日常集成分支;release 必须从最新 tip 切出
TARGET_BRANCHmain合并请求的目标分支(生产真源)
RELEASE_BRANCH_PREFIXrelease/release 分支名前缀

调用方式

/publish 0.1.14

目标版本号是唯一必填参数,其余均从配置或自动检测获取。

发布流程

顺序硬约束: 先 PR 合入 main,再在 main tip 打并推送 v* tag。
禁止在 release 分支未合入 main 前推送生产 tag。

步骤 1, 读取配置并确认版本

  1. 获取仓库根目录:git rev-parse --show-toplevel
  2. 记录当前分支为 {original_branch}。
  3. git fetch {REMOTE} {INTEGRATION_BRANCH} {TARGET_BRANCH}
  4. 从 VERSION_FILE 读取当前版本(在即将基于的 integration tip 上):
    git show {REMOTE}/{INTEGRATION_BRANCH}:pyproject.toml | grep -E '^\s*version\s*=\s*"[^"]+"'
    
  5. 检查未提交的更改:
    git status --short
    
    若工作树不干净:中止并要求用户先提交或 stash。发布不得夹带无关脏文件。
  6. 查找最近的 git tag:
    git tag --sort=-creatordate | head -1
    
    如果没有 tag,视为首次发布(在步骤 3 中使用从仓库初始到 HEAD 的所有提交)。
  7. 展示确认信息:
当前版本 (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 确认,立即中止。

步骤 2, 从 develop 创建 release 分支

Read the whole SKILL.md on GitHub

More in DevOps