我正在编写一个脚本,通过使用changelogs API在Gitlab上生成一个更新日志,其中包含我的主分支的提交。这个项目已经很先进了,但我以前从未做过。我遵循了一些指南,最终创建了一个管道,该管道将启动一个脚本,然后使用Gitlab API生成一个changelog文件。
这是我的管道:
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文件
但是每当我提交一个请求时,我都会收到来自API的答案:
{“message”:“无法生成更新日志:未指定提交开始范围,并且找不到可替代使用的以前的标记”}422
我认为错误可能是在项目的配置或提交消息上,但我没有在文档中找到有关此错误的更多信息。
UPDATE我已经通过在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}")
但现在我得到以下错误
无法生成更新日志:被自定义钩子拒绝
1条答案
按热度按时间zxlwwiss1#
在Repository-〉Settings中查看您的推送规则(如果是组,则为预定义的推送规则)
https://gitlab.com/gitlab-org/gitlab-web-ide/-/issues/122
您的提交违反了其中的一个或多个。