首页 > 解决方案 > 如何使用 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

有人看到错误吗?

标签: bashgitlabgitlab-api

解决方案


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

推荐阅读