如何使用 gitlab 删除每个已关闭的里程碑 api

How to delete every closed milestone with 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/"
}

制作一个循环并删除它

# 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

有人看到错误了吗?

我必须使用以下代码删除 $milestone_id 变量中的 /r 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