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名称
}

 

posted @ 2023-03-05 22:23  wushaoyu  阅读(309)  评论(0编辑  收藏  举报