Skip to content

参考:配置 / CLI / Action / 坑速查

基于 release-please · 核于 2026-07

速查

  • 两文件release-please-config.json(配置)+ .release-please-manifest.json(各包当前版本)。
  • 接入googleapis/release-please-action@v4(Actions)或 release-please CLI(npm i release-please -g)。
  • 权限contents: write + pull-requests: write(+ 需要标签时 issues: write)。
  • 版本推断fix→patch、feat→minor、feat!:/BREAKING CHANGE→major;Release-As: x.y.z 覆盖。
  • 发布闸门:合并 Release PR 才打 tag/建 Release;输出 release_created 门控后续发包。
  • monorepopackages 映射路径→配置;separate-pull-requests 切换组合/独立 PR;tag 默认 <component>-vX.Y.Z
  • 标签autorelease: pendingtaggedpublished;卡住加 release-please: force-run
  • 默认可见 changelog 类型feat/fix/perf/deps/revert;其余默认 hidden
  • 默认 GITHUB_TOKEN 不触发下游工作流 → 需要时换 PAT / GitHub App token。
  • 调试:CLI --dry-run + --debug;只支持 GitHub 平台。

一、release-please-config.json 顶层字段

字段含义
packages必填。路径 → 包配置 的映射;"." 表示仓库根
release-type默认 release type(默认 node),各包可覆盖
plugins插件数组:node-workspace / cargo-workspace / maven-workspace / linked-versions / sentence-case / group-priority
separate-pull-requeststrue = 每包独立 Release PR;默认 false = 组合成一个
include-component-in-tagfalse 时 tag 从 <component>-vX.Y.Z 变为 vX.Y.Z
group-pull-request-title-pattern组合 PR 的标题模板
bump-minor-pre-major<1.0.0 时破坏性变更只升 minor
bump-patch-for-minor-pre-major<1.0.0 时 feat 只升 patch
versioning-strategydefault/always-bump-patch/always-bump-minor/always-bump-major/service-pack/prerelease
release-as手动锁定版本(合并后应删除)
prerelease-type预发布标识(如 beta
changelog-sections提交类型 → changelog 分区 的映射(含 hidden
changelog-hostchangelog 链接的 GitHub 域名(默认 https://github.com
include-commit-authorschangelog 条目附作者名
draft / prerelease建草稿 / 预发布 Release
skip-github-release / skip-changelog跳过建 Release / 跳过 changelog
bootstrap-sha / last-release-sha限定初始 changelog 起点 / 覆盖上次发布标记
always-updaterelease notes 未变也强制刷新 PR
extra-files额外需要写回版本号的文件(支持 JSON/XML/YAML/TOML/generic)

二、packages 内的每包配置

字段含义
release-type覆盖默认 release type(该包用哪种语言策略)
package-name包名;对无源码可查名字的类型(如 python)必填
changelog-pathchangelog 路径(相对包目录,默认 CHANGELOG.md
changelog-host该包 changelog 的 GitHub 域名覆盖
exclude-paths从该包变更判定中排除的子目录
release-as该包版本覆盖;设为 "" 则显式恢复用 Conventional Commits
draft / prerelease该包的 Release 设置

三、内置 release type(多语言)

bazeldartelixirgohelmjava(及 maven)、krm-blueprintnodeexpoocamlphppythonrrubyrustsfdxterraform-modulesimple 等(20+)。simple 只维护版本文件与 changelog、不绑定特定语言的清单格式。

四、CLI 命令

安装:npm i release-please -g。全局必填 --token(repo 写权限)与 --repo-url<owner>/<repo>)。

命令作用
release-please bootstrap生成 config + manifest 两文件并开初始化 PR
release-please release-pr创建/更新 Release PR
release-please github-release从已合并的 Release PR 创建 tag / GitHub Release
release-please manifest-pr已废弃,功能并入 release-pr
release-please manifest-release已废弃,功能并入 github-release

常用 flag:--release-type--target-branch--config-file(默认 release-please-config.json)、--manifest-file(默认 .release-please-manifest.json)、--path(默认 .)、--initial-version(默认 0.0.0)、--dry-run--debug / --trace--draft-pull-request

bash
# 初始化 manifest(node monorepo)
release-please bootstrap \
  --token=$GITHUB_TOKEN \
  --repo-url=owner/repo \
  --release-type=node

# 干跑:看它打算创建/更新什么,不落地
release-please release-pr \
  --token=$GITHUB_TOKEN \
  --repo-url=owner/repo \
  --release-type=node \
  --dry-run --debug

五、release-please-action 输入/输出

常用 inputsgoogleapis/release-please-action@v4):

input含义
tokenGitHub token,默认 secrets.GITHUB_TOKEN;需触发下游工作流时换 PAT/App token
release-type语言策略(node/python/go/rust…);用 manifest 时可省
config-file配置文件路径,默认 release-please-config.json
manifest-filemanifest 文件路径,默认 .release-please-manifest.json
target-branchRelease PR 针对的分支,默认自动识别
path从仓库子目录发布
skip-github-release / skip-github-pull-request跳过建 Release / 跳过建 PR
include-component-in-tagmonorepo tag 前缀开关

常用 outputsrelease_createdreleases_createdprs_createdtag_nameversion / major / minor / patchshabodyupload_urlhtml_urlpaths_releasedpr / prs。monorepo 下还有按路径前缀的输出(如 packages/foo--release_created)。

六、autorelease 标签生命周期

标签含义
autorelease: pendingRelease PR 待发布(默认「pending」标签,可用 --label 改)
autorelease: tagged已打 tag(默认「release」标签,可用 --release-label 改)
autorelease: publishedGitHub Release 已发布
autorelease: snapshot快照发布状态
autorelease: closedPR 被关闭;reopen 不会自动重跑
release-please: force-run手动强制 release-please 重新处理

七、默认 changelog 分区

默认展示 feat(Features)、fix(Bug Fixes)、perf(Performance Improvements)、deps(Dependencies)、revert(Reverts);默认 hidden 的有 docsstylechorerefactortestbuildci。改 changelog-sections 里对应类型的 hidden 即可增删。注意:默认可见的类型 ≈ 会推进版本的类型——只提交 docs/chore 不会产生 Release PR。

八、常见坑速查

现象原因 / 解法
一直没有 Release PR自上次发布起只有 docs/chore 等非发版提交;或提交信息不符合 Conventional Commits
Release PR 上没有 CI 检查默认 GITHUB_TOKEN 不触发下游工作流 → 换 PAT / GitHub App token
tag 事件没触发别的工作流同上,默认 token 的循环防护 → 换 PAT / App token
合并 PR 后没发布合并后需再有一次运行来打 tag/建 Release;检查工作流是否被合并 push 触发
版本号不对 / 想指定版本提交 body 写 Release-As: x.y.z,或配置 release-as(合并后删)
0.x 项目破坏性变更直接跳 1.0bump-minor-pre-major: true(+ bump-patch-for-minor-pre-major
monorepo tag 撞车保留 include-component-in-tag: true(默认),让 tag 带包前缀
PR 被误关无法恢复移除 autorelease: closed,加 autorelease: pending + release-please: force-run
想本地验证配置CLI --dry-run --debug(用真实分支而非 fork,fork 不复制 tag/release)
非 GitHub 平台想用不支持;GitLab/Bitbucket 请选 semantic-release 等

九、权威链接