logo
0
0
WeChat Login
更新变量占位符语法为@{}格式

CNB Auto Release Plugin

CNB 自动发布插件,自动管理仓库的 tag 和 release 版本号。

功能特性

  • 自动获取仓库所有 tags,按语义化版本排序
  • 智能版本号递增(支持自定义规则)
  • 支持自定义 tag 格式模板
  • 支持 dry-run 模式(仅计算版本号,不实际创建)
  • 自动创建 tag 和 release
  • 输出流水线变量供后续步骤使用

版本递增规则

  • 若仓库无 tag,则生成初始版本 v1.0.1
  • 否则,取最新 tag(按语义化版本排序),递增规则:
    • 补丁号(patch)增加 1
    • 若 patch 达到 100,则进位到次版本号(minor)并重置 patch 为 0
    • 若 minor 达到 100,则进位到主版本号(major)并重置 minor、patch 为 0

示例:

  • v1.0.1v1.0.2
  • v1.0.99v1.1.0
  • v1.99.99v2.0.0

使用方法

.cnb.yml 流水线配置中使用:

stages: - name: auto-release image: docker.cnb.cool/r_r/auto-release:latest settings: tagFormat: "v@{version}" dryRun: false

参数配置

tagFormat

  • 类型: string
  • 默认值: v@{version}
  • 必填: 否
  • 说明: 指定 tag 格式,其中 @{version} 会由生成的版本号替换。如版本号为 1.2.3,则 v@{version} 生成 v1.2.3

示例:

stages: - name: auto-release image: docker.cnb.cool/r_r/auto-release:latest settings: tagFormat: "v-@{version}"

dryRun

  • 类型: boolean
  • 默认值: false
  • 必填: 否
  • 说明: 是否只计算下一个版本号,而不实际创建 tag 和 release。

示例:

stages: - name: auto-release image: docker.cnb.cool/r_r/auto-release:latest settings: dryRun: true

slug

  • 类型: string
  • 默认值: 当前仓库路径
  • 必填: 否
  • 说明: 仓库路径。非跨仓无需传入,如需跨仓库操作可使用此参数指定。

endpoint

  • 类型: string
  • 默认值: 当前平台的 OPENAPI 地址
  • 必填: 否
  • 说明: 平台 API 地址。非跨平台无需传入,如需跨平台操作可使用此参数指定,如 https://api.cnb.cool

token

  • 类型: string
  • 默认值: 当前用户的临时票据
  • 必填: 否
  • 说明: 平台 token。如需跨平台创建,可传入该参数。需包含以下权限:repo-contents:r,repo-code:rw

输出变量

无论是否 dry-run,均会输出以下流水线变量:

##[set-output auto-tag=v1.0.1] ##[set-output auto-release=v1.0.1]

可在后续步骤中通过 @{auto-tag}@{auto-release} 引用。

完整示例

main: push: - stages: - name: auto-release image: docker.cnb.cool/r_r/auto-release:latest settings: tagFormat: "v@{version}" dryRun: false exports: auto-tag: AUTO_TAG auto-release: AUTO_RELEASE - name: echo env script: - echo "AUTO_TAG $AUTO_TAG" - echo "AUTO_RELEASE $AUTO_RELEASE"

跨仓库示例

main: push: - stages: - name: auto-release-other-repo image: docker.cnb.cool/r_r/auto-release:latest settings: slug: "other-owner/other-repo" endpoint: "https://api.cnb.cool" token: "${OTHER_REPO_TOKEN}"

错误处理

遇到 API 错误或参数缺失时,插件会退出并返回非零状态码,导致流水线失败。

许可证

MIT License