Skip to content

Instantly share code, notes, and snippets.

@willnewby
Created February 5, 2020 22:36
Show Gist options
  • Save willnewby/d413df4dc3b441f21863e3c0f7e421de to your computer and use it in GitHub Desktop.
Save willnewby/d413df4dc3b441f21863e3c0f7e421de to your computer and use it in GitHub Desktop.
Jenkins Job List, including lastSuccess and lastFailure
package main
import (
"fmt"
"time"
"github.com/bndr/gojenkins"
)
func main() {
fmt.Printf("Folder,Job,Number of Runs,IsEnabled,LastBuildSuccess,LastBuildSuccessTime,LastBuildFailure,LastBuildFailureTime\n")
jenkins, _ := gojenkins.CreateJenkins(nil, "https://jenkins.mydomain.com/", "my-username", "not-really-my-password").Init()
jobs, err := jenkins.GetAllJobs()
if err != nil {
fmt.Printf("%+v", err)
}
for _, folder := range jobs {
fmt.Printf("%s,,,,,,\n", folder.Raw.DisplayName)
jobs, err := folder.GetInnerJobs()
if err != nil {
fmt.Printf("%+v", err)
}
for _, job := range jobs {
//fmt.Printf("LastCompletedBuildNumber: '%v'\n", string(job.Raw.LastCompletedBuild.Number))
isEnabled, err := job.IsEnabled()
if err != nil {
fmt.Printf("Failed to IsEnabled, %v\n", err)
}
var lastBuildSuccess bool
var lastBuildSuccessTime time.Time
if job.Raw.LastSuccessfulBuild.Number != 0 {
lastBuildSuccessRun, err := job.GetBuild(job.Raw.LastSuccessfulBuild.Number)
if err != nil {
fmt.Printf("Failed to GetBuild, %v\n", err)
}
lastBuildSuccess = lastBuildSuccessRun.IsGood()
lastBuildSuccessTime = lastBuildSuccessRun.GetTimestamp()
} else {
lastBuildSuccess = false
lastBuildSuccessTime = time.Unix(0, 0)
}
var lastBuildFailure bool
var lastBuildFailureTime time.Time
if job.Raw.LastFailedBuild.Number != 0 {
lastBuildFailureRun, err := job.GetBuild(job.Raw.LastFailedBuild.Number)
if err != nil {
fmt.Printf("Failed to GetBuild, %v\n", err)
}
lastBuildFailure = lastBuildFailureRun.IsGood()
lastBuildFailureTime = lastBuildFailureRun.GetTimestamp()
} else {
lastBuildFailure = false
lastBuildFailureTime = time.Unix(0, 0)
}
//scm := job.Raw.Scm
//fmt.Printf("%+v\n", scm)
// Calculate total builds based on first + last
totalBuilds := int(job.Raw.LastBuild.Number - job.Raw.FirstBuild.Number)
fmt.Printf(" ,%s,%v,%v,%v,%v,%v,%v\n", job.Raw.DisplayName, totalBuilds, isEnabled, lastBuildSuccess, lastBuildSuccessTime.String(), lastBuildFailure, lastBuildFailureTime.String())
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment