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. 您实际得到的结果?
并没有删除
http错误码这么明显,403 Forbidden 应该是 gitlab client 的用户没有权限。检查一下试试。