go操作gitlab api删除错误的合并请求,失败之后返回403状态码

1. 运行环境

go1.17.1 windows/amd64

2. 问题描述?

想使用golang操作gitlab api的方式删除合并请求,但是使用DeleteMergeRequest方法之后,返回的状态码为403,没有删除成功。

package xxxx
import "github.com/xanzy/go-gitlab"
...
func  main() {
    git, err := gitlab.NewClient(token, gitlab.WithBaseURL(url))
    if err != nil {
        log.Fatalf("Failed to create client: %v", err)
    }
    log.Println("开始获取项目信息")
    project, _, err := git.Projects.ListProjects(&gitlab.ListProjectsOptions{})

    if err != nil {
        fmt.Printf("获取项目信息异常:%v", err)
        panic(err)
    }
    for  _, v := range project {
        fmt.Println("name:", v.Owner.Username+"/"+v.Name)
        if v.Owner.Username+"/"+v.Name != groupName {
            continue
        }
        log.Println("项目名:", v.Owner.Username+"/"+v.Name, "创建时间:", v.CreatedAt.Format("2006-01-02"))
        // 合并MR
        ListMergeOps := &gitlab.ListProjectMergeRequestsOptions{
            OrderBy: gitlab.String("updated_at"),
            State:   gitlab.String("opened"),
            Scope:   gitlab.String("all"),
        }
        mr, _, err := git.MergeRequests.ListProjectMergeRequests(v.ID, ListMergeOps)
        if err != nil {
            panic(err)
        }

        for  _, v := range mr {
            log.Printf("用户:%v发起了一个MR请求,描述信息:%v, MR_ID: %v, 项目ID: %v", v.Author.Name, v.Title, v.IID, v.ProjectID)
            code, err := git.MergeRequests.DeleteMergeRequest(v.ProjectID, v.IID)
            if err != nil {
                fmt.Println(err)
            }
            switch code.StatusCode {
            case  200:
                log.Println("删除合并请求成功")
            default:
                log.Println("删除失败,尝试下一次删除")
            }
        }
    }
}
...

3. 您期望得到的结果?

合并分支的请求被关闭掉

4. 您实际得到的结果?

并没有删除

讨论数量: 1

http错误码这么明显,403 Forbidden 应该是 gitlab client 的用户没有权限。检查一下试试。

1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!