使用GitLab semantic-release:如何将Artifacts添加为发布资产?
把GitLab CI制品添加为semantic-release发布资产的方法
要让semantic-release自动把CI生成的Artifacts挂载到GitLab发布页面,核心是配置semantic-release的GitLab插件,指定要上传的资产路径。以下是具体修改步骤:
1. 新增semantic-release配置文件
在项目的release目录(你运行semantic-release的目录)下创建.release.yml,配置GitLab插件的assets参数,指定要上传的文件:
plugins: - "@semantic-release/changelog" - "@semantic-release/git" - [ "@semantic-release/gitlab", { assets: [ # 路径相对于release目录,指向frontend的dist产物 { path: "../frontend/dist/**/*", label: "前端构建包" }, # 如果有其他制品,继续加在这里,比如后端包 # { path: "../backend/build/*.jar", label: "后端服务包" } ] } ]
label是显示在发布页面的资产名称,可以自定义。
2. 优化CI脚本的依赖安装方式
别再全局装semantic-release包了,把依赖写到release目录的package.json里更靠谱:
先在release目录建package.json:
{ "devDependencies": { "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", "@semantic-release/gitlab": "^12.0.2", "conventional-changelog-conventionalcommits": "^7.0.2", "semantic-release": "^22.0.12" } }
然后修改CI的script部分:
script: - cd frontend - npm install - npm run build - rm -rf $(ls -A | grep -v dist) # 只保留dist目录 - cd ../release - npm install # 安装本地依赖,替代全局安装 - npx semantic-release # 直接运行,GL_TOKEN会自动读取CI环境变量 # 删掉rm -rf ../.git/这行,没必要删除项目的git目录
3. 调整CI Artifacts配置(可选)
当前你的Artifacts会打包整个项目,建议只保留需要的产物,减少打包体积:
artifacts: name: "dashboard-$CI_COMMIT_SHA" paths: - frontend/dist/ exclude: - frontend/dist/**/*.map # 如果不需要sourcemap可以排除
注意事项
- 路径一定要对应:semantic-release的
assets.path是相对于你运行它的目录(也就是release目录),别写错路径导致找不到文件。 - GL_TOKEN权限:确保这个token有项目的Maintainer或以上权限,不然传不上资产。
- 插件版本:尽量用最新的semantic-release插件版本,避免兼容性问题。
这样配置后,每次semantic-release触发发布时,都会自动把你指定的制品上传到GitLab的发布页面,作为发布资产显示出来。
内容的提问来源于stack exchange,提问作者blue_e
相关产品推荐
相关产品推荐

