调用gitlab api接口提交pr

登录

// 账号密码登录
gitCli, err := gitlab.NewBasicAuthClient(
	"用户名",
	"密码",
	gitlab.WithBaseURL("公司git网址"),
)
if err != nil {
	log.Fatal("获取gitlab登录权限失败")
}

// token登录
userToken := "gitlab token"
addr := "公司git网址"
gitCli, err = gitlab.NewClient(userToken, gitlab.WithBaseURL(addr))
if err != nil {
	log.Fatal("Failed to create gitlab client", err)
}

创建分支

func CreateBranch(gitCli *gitlab.Client) {
	now := time.Now()
	nowStr := fmt.Sprintf("%d%d%d%d%d%d", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
	newBranch := "fix_" + nowStr
	fmt.Println(newBranch)
	opt := gitlab.CreateBranchOptions{
		Branch: gitlab.String(newBranch),
		Ref:    gitlab.String("main"),
	}
	branch, resp, err := gitCli.Branches.CreateBranch(144, &opt)
	if err != nil {
		log.Fatal("创建分支失败", err)
	}
	if resp.StatusCode != 201 {
		log.Fatal("创建分支失败", err)
	}
	fmt.Println(branch)
}

获取文件内容

func GetFileContent(gitCli *gitlab.Client) {
	// 对路径进行urlencoded
	escapeUrl := url.QueryEscape("test/pom.xml")
	fmt.Println("编码:", escapeUrl)

	// 获取文件内容
	file, resp, err := gitCli.RepositoryFiles.GetFile("xxx/pr_test", "test/pom.xml", &gitlab.GetFileOptions{
		Ref: gitlab.String("main"),
	})
	if err != nil {
		log.Fatal("获取文件内容失败", err)
	}
	fmt.Println(resp.StatusCode)
	fmt.Println(file.Content)
}

创建新的文件

func CreateFile(gitCli *gitlab.Client) {
	createFileOpt := &gitlab.CreateFileOptions{
		Branch:        gitlab.String("main"),
		Content:       gitlab.String("My file contents"),
		CommitMessage: gitlab.String("Adding a test file"),
	}

	fileInfo, _, err := gitCli.RepositoryFiles.CreateFile(144, "file.go", createFileOpt)
	if err != nil {
		log.Fatal("创建文件失败", err)
	}
	fmt.Println(fileInfo.FilePath)
}

更新文件

func UpdateFile(gitCli *gitlab.Client) {

	uf := &gitlab.UpdateFileOptions{
		Branch:        gitlab.String("main"),
		Content:       gitlab.String("my file contentsssssss"),
		CommitMessage: gitlab.String("Fixing vuln"),
	}

	file, resp, err := gitCli.RepositoryFiles.UpdateFile("xxx/pr_test", "test/Readme.md", uf)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(resp.StatusCode)
	fmt.Println(file.FilePath)

}

mergeRequest

func mergeRequest(gitCli *gitlab.Client) {

	cr := &gitlab.CreateMergeRequestOptions{
		Title: gitlab.String("mr提交"),
		Description: gitlab.String("测试"),
		SourceBranch: gitlab.String("fix_2022214174344"),
		TargetBranch: gitlab.String("main"),
		TargetProjectID: gitlab.Int(144),
	}

	mr, resp, err := gitCli.MergeRequests.CreateMergeRequest(144, cr)
	if err != nil {
		log.Fatal(resp)
	}
	fmt.Println(resp.StatusCode)
	fmt.Println(mr.Description)
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

活火石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值