如何使用 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...