bash - 如何使用 gitlab api 删除每个已关闭的里程碑
问题描述
因为我们是一个小团队,所以我们用周数来设定里程碑。例如: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
推荐阅读
- android - running background task using executor service
- angular - Angular 页面刷新“t 未定义”
- azure - 是否可以更改在 Azure 中的虚拟机上运行的映像而不重新创建它
- javascript - Division in JavaScript of two fields
- swift - How Swift Vars automatically convert to My Any Type
- sql - 单个字段的多个输入值 - PLSQL
- cypress - 使用赛普拉斯发送 POST 时来自 API 的错误消息
- node.js - Req.body 未按预期为 NextApiRequest 提供 formData 的输出
- jupyter - 使用jieba时,出现“内核好像死机了,会自动重启的”
- sql-scripts - IBM i Access Client Solutions (ACS) 运行 SQL 脚本 - 打印变量