登录
// 账号密码登录
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)
}