使用GitLab Changelog API生成变更日志遇范围及钩子权限问题
问题:GitLab Changelog API生成变更日志遇错
场景说明
我正在编写脚本,通过GitLab Changelog API为主分支的提交记录生成变更日志。项目已处于进阶阶段,但我此前从未进行过此类操作。参照相关指南,我创建了流水线来启动脚本,调用GitLab API生成CHANGELOG.md文件。
流水线配置
stages: - tag changelog: stage: tag image: curlimages/curl:7.79.1 only: - main script: - '. gitlab-changelog.sh ${API_TOKEN} https://gitlab.com/api/v4/projects/${PROJECT_ID}/repository/changelog'
脚本内容
#!/bin/bash app_version=$(cat VERSION.md) branch=main echo "CHANGELOGS SCRIPT IS RUNNING!" link=https://gitlab.com/<project-path>/-/blob/${branch}/CHANGELOG.md GITLAB_PROJECT_ACCESS_TOKEN=$1 GITLAB_PROJECT_CHANGELOG_API=$2 response=$(curl --write-out '%{http_code}' --request POST --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_ACCESS_TOKEN}" --data "version=${app_version}&branch=${branch}" "${GITLAB_PROJECT_CHANGELOG_API}") echo "response: $response" if [ $response == 200 ] then echo "Updated changelog: ${link}" else echo "An error occurred when requesting GitLab API" fi;
期望行为
推送格式如下的提交到主分支时,API能自动创建或更新CHANGELOG.md文件:
Title
Body
Changelog: added
初始错误
每次提交都会收到API返回的错误:
{"message":"Failed to generate the changelog: The commit start range is unspecified, and no previous tag could be found to use instead"}422
我猜测错误可能出在项目配置或提交消息,但未在官方文档中找到相关说明。
更新:新错误
我已通过在curl请求中添加from参数修复了上述问题:
response=$(curl --write-out '%{http_code}' --request POST --header "PRIVATE-TOKEN: ${GITLAB_PROJECT_ACCESS_TOKEN}" --data "version=${app_version}&branch=${branch}&from=${START_COMMIT_SHA}" "${GITLAB_PROJECT_CHANGELOG_API}")
但现在又出现新错误:
Failed to generate the changelog: denied by custom hooks
内容的提问来源于stack exchange,提问作者Armando Peña
相关产品推荐
相关产品推荐

