package main
import (
"fmt"
"time"
"errors"
"strings"
"net/url"
"github.com/jenkins-x/golang-jenkins"
)
func main() {
auth := &gojenkins.Auth{
Username: "user_id",
ApiToken: "api_token",
}
jenkins := gojenkins.NewJenkins(auth, "https://domain.name")
job, err := jenkins.GetJob("job_name")
if err != nil {
panic(err)
}
//fmt.Println("job:", job)
params := make(url.Values)
params.Add("git_branch", "20191010")
params.Add("hostlist", "127.0.0.1")
params.Add("status", "deploy")
err = jenkins.Build(job, params)
if err != nil {
panic(err)
}
build, err := jenkins.GetLastBuild(job)
if err != nil {
panic(err)
}
//fmt.Println("build:", build)
var output []byte
for i:=0; i<60; i++ {
output, err = jenkins.GetBuildConsoleOutput(build)
if err != nil {
panic(err)
}
if strings.Contains(string(output), "Finished:") {
break
}
time.Sleep(time.Second)
}
if strings.Contains(string(output), "Finished: FAILURE") {
outputs := strings.Split(string(output), "\n")
panic(errors.New("build fail:"+strings.Join(outputs[len(outputs)-5:len(outputs)-2], "\n")))
}
fmt.Println("build ok:", string(output))
}
转载:https://blog.csdn.net/flynetcn/article/details/102490629
查看评论