问题描述
由于我们是一个小团队,所以我们用周数来设定里程碑。例如:week - 12
。
但是,当新的一年开始时,我们无法再创建这些里程碑,因为它们已经存在并且已关闭。
我想删除每个已关闭的里程碑,并为此尝试使用 giltab API。
我已经创建了以下脚本:
请求每个关闭的里程碑工作
# global.sh
get_closed_milestones(){
curl -s -H "$private_token" \
-X GET \
"${base_url}groups/${group_name}/milestones?state=closed"
}
remove_milestone() {
# echo result: https://gitlab.entepriseName.ch/api/v4/groups/entepriseName/milestones/279
curl -H "$private_token" \
-X DELETE \
"${base_url}groups/${group_name}/milestones/$1"
}
# milestone-remover.sh
#!/bin/bash
# Importes
source ./includes/global.sh
issues=$(get_closed_milestones)
for milestone_id in $(jq -c '.[] | .id'<<< "$issues"); do
milestone_id=${milestone_id%/r}
# If not null
if [ ! "$milestone_id" == "null/r" ];
then
remove_milestone "$milestone_id"
fi
done
我不得不使用 ! "$milestone_id" == "null/r"
因为我意识到我确实像这样得到了 null。
它看起来有点僵硬,但它确实发送了请求。然后我会收到这个回复
+ curl -H 'PRIVATE-TOKEN: xxxxx' -X DELETE $'https://gitlab.entepriseName.ch/api/v4/groups/entepriseName/milestones/293\r'
curl: (3) URL using bad/illegal format or missing URL
有人看到错误了吗?
解决方法
我必须删除以删除 /r
变量中的 $milestone_id
,代码如下 milestone_id="${milestone_id%%[[:cntrl:]]}"
这是最终代码
issues=$(get_closed_milestones)
for milestone_id in $(jq -c '.[] | .id'<<< "$issues"); do
milestone_id="${milestone_id%%[[:cntrl:]]}"
# If not null
if [ ! "$milestone_id" == "null/r" ];
then
remove_milestone "$milestone_id"
fi
done