需要引用的包
“github.com/bndr/gojenkins”
实现的功能是请求localhost:8080/alljobs 会请求对应jenkins,把里面的Job Names, Color, URL存储到数据库中,如果job名称已经存在,则只更新一下时间。
// 请求job的结果如下
// test-yjknode http://192.168.1.171:7070/job/test-yjknode/ blue
// xujiamin-test http://192.168.1.171:7070/job/xujiamin-test/ notbuilt
主要代码 allJobs.go
package api
import (
"DEVOPS/models"
"fmt"
"github.com/bndr/gojenkins"
)
type AllJobsController struct {
BaseController
}
func (c *AllJobsController) Get() {
jenkins := gojenkins.CreateJenkins(nil, "http://192.168.1.171:7070", "admin", "admin")
// jenkins := gojenkins.CreateJenkins(nil, "http://localhost:8080", "admin", "admin")
_, err1 := jenkins.Init()
if err1 != nil {
fmt.Println(err1)
}
// 连接成功
fmt.Println("is ok")
// 获取所有任务信息
jobs, err2 := jenkins.GetAllJobNames()
if err2 != nil {
fmt.Println(err2)
}
// Get Only Array of Job Names, Color, URL
// Does not query each single Job.
for _, job := range jobs {
// fmt.Println(job.Name, job.Url, job.Color)
// fmt.Println("%T\n", job)
// 导入job?
loadjob := models.Load{}
loadjob.Name = job.Name
loadjob.Url = job.Url
loadjob.Color = job.Color
loadjob.AddTime = int(models.GetUnix())
// 判断数据库里面有没有当前job
loadList := []models.Load{}
models.DB.Where("name=?", loadjob.Name).Find(&loadList)
if len(loadList) > 0 {
fmt.Println(job.Name + "已经存在,仅更新一下时间")
models.DB.Where("Name = ?", loadjob.Name).Find(&loadjob)
loadjob.AddTime = int(models.GetUnix())
err3 := models.DB.Save(&loadjob).Error
if err3 != nil {
fmt.Println(job.Name + "已经存在,更新时间失败")
} else {
fmt.Println(job.Name + "已经存在,更新时间成功")
}
} else {
err4 := models.DB.Create(&loadjob).Error
if err4 != nil {
fmt.Println(job.Name + "导入失败")
c.Error("导入job失败", "/")
return
}
fmt.Println(job.Name + "导入成功")
c.Success("导入job成功", "/")
}
}
c.Ctx.WriteString("job load over")
}
// 结果
// test-yjknode http://192.168.1.171:7070/job/test-yjknode/ blue
// xujiamin-test http://192.168.1.171:7070/job/xujiamin-test/ notbuilt
存入数据库之后是这样子