GitLab CI调用API生成CHANGELOG显示“No changes”问题求助
排查GitLab CHANGELOG API返回“No changes”的可能原因
版本标签格式不统一
你的请求中from参数是带v前缀的v2.4.0,但to参数是不带前缀的2.5.0。GitLab的标签是严格区分格式的,如果仓库中实际的2.5.0版本标签是v2.5.0,API会找不到对应的to标签,导致对比区间为空。建议统一标签格式,修改请求如下:curl --header "Authorization: Bearer *****" --data "version=2.5.0&from=v2.4.0&to=v2.5.0" "https://git.ru/api/v4/projects/22/repository/changelog"提交不符合CHANGELOG筛选规则
GitLab CHANGELOG API默认只抓取符合Conventional Commits规范的提交(比如带有feat:、fix:、chore:等前缀的提交信息)。如果v2.4.0到v2.5.0区间内的所有提交都没有这类前缀,API就会返回“No changes”。
可以尝试添加all=true参数强制包含所有提交(需确认GitLab版本支持该参数),请求示例:curl --header "Authorization: Bearer *****" --data "version=2.5.0&from=v2.4.0&to=v2.5.0&all=true" "https://git.ru/api/v4/projects/22/repository/changelog"同时可以手动检查这段区间的提交历史,确认是否有符合规范的变更提交。
权限或项目ID错误
虽然请求成功返回内容,但仍需确认:- Bearer令牌是否拥有目标项目的
read_repository权限,缺少权限可能导致API无法读取完整提交历史; - 项目ID
22是否正确,以及GitLab实例地址https://git.ru是否指向目标仓库,避免请求到错误项目导致无变更可展示。
- Bearer令牌是否拥有目标项目的
GitLab版本兼容性问题
旧版本的GitLab对CHANGELOG API的参数支持可能存在限制,比如all这类参数是在特定版本才引入的。可以查看你的GitLab实例版本,确认使用的参数是否兼容当前版本。
内容的提问来源于stack exchange,提问作者HavyZail
相关产品推荐
相关产品推荐

