使用semantic-release的Node项目如何将构建产物添加为Github Release资产?
解决方案
步骤1:安装依赖
首先在项目中安装semantic-release的GitHub插件,用于自定义Release上传资产:npm install @semantic-release/github --save-dev
步骤2:新增打包构建产物步骤(可选但推荐)
把dist目录打包为单一zip包方便上传,在你的Run build步骤之后、Release步骤之前新增如下步骤:
- name: 打包构建产物 run: zip -r dist.zip dist/
你之前加的Archive build步骤是将产物上传到GitHub Actions的制品存储,和Release资产无关,不需要可以删除,保留也不影响流程
步骤3:配置semantic-release上传资产
在项目根目录新增.releaserc.json配置文件,或者在package.json中新增release字段,配置如下:
示例(package.json配置):
{ "release": { "branches": ["main"], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", [ "@semantic-release/github", { "assets": [ { "path": "dist.zip", "name": "build-v${nextRelease.version}.zip", "label": "生产构建产物" } ] } ] ] } }
配置说明:
path:本地要上传的文件路径,支持通配符匹配多个文件,比如填写dist/*.js就会批量上传dist目录下所有js文件name:上传到Release后显示的文件名,支持注入版本号变量label:Release页面中该资产的说明文字
如果运行时出现权限报错,可在工作流的job配置中添加权限声明:
jobs: release-on-push-on-main: runs-on: ubuntu-latest permissions: contents: write # 允许写入Release内容 # 剩下的原有配置保留
步骤4:运行发布流程
你原来的Release步骤可以直接保留使用,配置生效后每次执行semantic-release时会自动将指定资产附加到对应GitHub Release中。
内容的提问来源于stack exchange,提问作者user17298649
相关产品推荐
相关产品推荐

