semantic-release未创建新版本且CHANGELOG未推送至GitLab问题求助
问题原因
你的配置存在两处核心缺失:
- 缺少
@semantic-release/git插件:@semantic-release/changelog仅负责在CI运行环境本地生成CHANGELOG.md文件,没有自动提交修改并推回GitLab仓库的能力,该能力需要@semantic-release/git插件实现。 - 当前
@semantic-release/gitlab中的assets参数,仅会把CHANGELOG.md作为GitLab Release详情页的附件上传,不会同步更新代码仓库内的对应文件。
修复步骤
- 修改
.releaserc配置,在plugins数组中新增git插件:
{ "branches": ["master"], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", [ "@semantic-release/changelog", { "changelogFile": "docs/CHANGELOG.md" } ], // 新增git插件配置 [ "@semantic-release/git", { "assets": ["docs/CHANGELOG.md"], "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}" } ], [ "@semantic-release/gitlab", { "assets": [{"path": "docs/CHANGELOG.md"}] } ] ] }
- 修改
gitlab-ci.yml的release阶段,安装新增的git插件:
release: image: node:13 stage: release only: refs: - master before_script: - 'echo Stage - Release started' script: - npm install @semantic-release/gitlab - npm install @semantic-release/changelog - npm install @semantic-release/git # 新增安装命令 - npx semantic-release after_script: - 'echo Stage - Release finished'
- 检查GitLab权限配置:
- 确认CI变量中配置的
GITLAB_TOKEN权限范围包含api、read_repository、write_repository,且对应当账号有仓库的读写权限 - 进入仓库「设置」-「仓库」-「受保护分支」页面,找到master分支,为
GitLab CI角色开放「允许推送」权限
额外检查项
如果配置修改后仍未生成GitLab Release,确认你使用的@semantic-release/gitlab插件版本和你部署的GitLab版本兼容,你当前使用的semantic-release v17.4.4建议搭配@semantic-release/gitlab v6.x版本使用,避免版本兼容问题。
内容的提问来源于stack exchange,提问作者Zumpel
相关产品推荐
相关产品推荐

