是否可在Github Actions的semantic release中排除指定提交的发布说明?
解决方案
可以实现该需求,核心是利用@semantic-release/commit-analyzer和@semantic-release/release-notes-generator两个插件支持独立配置规则的特性,分别控制提交的版本升级判断逻辑和发布说明展示逻辑即可,二者规则互不影响。
配置步骤
1. 调整semantic-release核心配置
在项目的semantic-release配置文件(支持release.config.js、.releaserc.json或package.json中的release字段)中分别配置两个插件的规则,示例如下:
// release.config.js 示例 module.exports = { branches: ['main'], plugins: [ // 提交分析插件:定义哪些提交会触发版本升级 [ '@semantic-release/commit-analyzer', { preset: 'angular', releaseRules: [ // 示例规则:chore类型提交触发补丁版本升级 { type: 'chore', release: 'patch' }, // 可自定义更细粒度规则,比如匹配指定scope、提交关键词等 { scope: 'deps', release: 'patch' } ] } ], // 发布说明生成插件:定义哪些提交不展示在发布说明中 [ '@semantic-release/release-notes-generator', { preset: 'angular', // 示例规则:排除所有chore类型提交,不会出现在生成的发布说明里 excludeTypes: ['chore'] } ], // 其余插件保持原有配置即可 '@semantic-release/changelog', '@semantic-release/github' ] }
2. Github Actions workflow适配
不需要修改原有Github Actions的workflow逻辑,只要项目根目录存在正确的semantic-release配置文件,正常调用semantic-release action即可生效,示例workflow片段:
steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # 必须拉取全量提交记录才能正确分析 - name: Run semantic release uses: semantic-release/semantic-release@v22 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
注意事项
- 两个插件的
preset参数要保持一致,避免规则逻辑不匹配 - 如果需要更细粒度的过滤(不是按提交类型过滤,而是匹配特定提交内容),可以给
release-notes-generator配置transform回调,匹配到目标提交时返回false即可过滤该条记录 - 本地验证可以执行
npx semantic-release --dry-run,测试版本升级逻辑和生成的发布说明是否符合预期
内容的提问来源于stack exchange,提问作者lakshmiravali rimmalapudi
相关产品推荐
相关产品推荐

