golang jenkinsapi 批量构建jenkins job
golang 批量构建jenkins job
py批量构建jenkins job是,若job在某个floder下面则无法调用,目前测试发现只要job在jenkins根目录下才可调用。golang则比较灵活,可以实现该需求,此处记录golang使用gojenkins包来批量构建jenkins的job。
package main import ( "context" "fmt" "strings" "github.com/bndr/gojenkins" ) func OneJobBuild(jenkins *gojenkins.Jenkins, ctx context.Context, jobname string) { jobarr := strings.Split(jobname, "/") newjobname := strings.Join(jobarr, "/job/") //newjobname: tomcat-test/job/open-api fmt.Printf("newjobname: %v\n", newjobname) _, err := jenkins.BuildJob(ctx, newjobname, nil) if err != nil { panic(err) } } func AllJobBuild(jenkins *gojenkins.Jenkins, ctx context.Context, jobname string) { _, err := jenkins.BuildJob(ctx, jobname, nil) if err != nil { panic(err) } } func main() { ctx := context.Background() jenkins, _ := gojenkins.CreateJenkins(nil, "http://10.0.0.1:8080", "user", "password").Init(ctx) gojenkins, err := jenkins.GetJob(ctx, "tomcat-test") //此处tomcat-test为jenkins的floder if err != nil { panic(err) } jobList, err2 := gojenkins.GetInnerJobs(ctx) if err2 != nil { panic(err2) } for _, job := range jobList { afterJob := strings.TrimLeft(job.Base, "/job") jobSplit := strings.Split(afterJob, "/") AllJobBuild(jenkins, ctx, afterJob) //构建某个floder下所有的job } // OneJobBuild(jenkins, ctx, jobname) //构建某一个job,需要传入job名称 }