Skip to content

Commit

Permalink
Add a new method to fetch builds with specific fields using a single …
Browse files Browse the repository at this point in the history
…api call

Signed-off-by: Dani Louca <[email protected]>
  • Loading branch information
dloucasfx committed Feb 10, 2020
1 parent a958d3e commit 121d335
Showing 1 changed file with 23 additions and 11 deletions.
34 changes: 23 additions & 11 deletions job.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,17 @@ type JobResponse struct {
IconUrl string `json:"iconUrl"`
Score int64 `json:"score"`
} `json:"healthReport"`
InQueue bool `json:"inQueue"`
KeepDependencies bool `json:"keepDependencies"`
LastBuild JobBuild `json:"lastBuild"`
LastCompletedBuild JobBuild `json:"lastCompletedBuild"`
LastFailedBuild JobBuild `json:"lastFailedBuild"`
LastStableBuild JobBuild `json:"lastStableBuild"`
LastSuccessfulBuild JobBuild `json:"lastSuccessfulBuild"`
LastUnstableBuild JobBuild `json:"lastUnstableBuild"`
LastUnsuccessfulBuild JobBuild `json:"lastUnsuccessfulBuild"`
Name string `json:"name"`
NextBuildNumber int64 `json:"nextBuildNumber"`
InQueue bool `json:"inQueue"`
KeepDependencies bool `json:"keepDependencies"`
LastBuild JobBuild `json:"lastBuild"`
LastCompletedBuild JobBuild `json:"lastCompletedBuild"`
LastFailedBuild JobBuild `json:"lastFailedBuild"`
LastStableBuild JobBuild `json:"lastStableBuild"`
LastSuccessfulBuild JobBuild `json:"lastSuccessfulBuild"`
LastUnstableBuild JobBuild `json:"lastUnstableBuild"`
LastUnsuccessfulBuild JobBuild `json:"lastUnsuccessfulBuild"`
Name string `json:"name"`
NextBuildNumber int64 `json:"nextBuildNumber"`
Property []struct {
ParameterDefinitions []ParameterDefinition `json:"parameterDefinitions"`
} `json:"property"`
Expand Down Expand Up @@ -192,6 +192,18 @@ func (j *Job) GetLastCompletedBuild() (*Build, error) {
return j.getBuildByType("lastCompletedBuild")
}

func (j *Job) GetBuildsFields(fields []string, custom interface{}) error {
if fields == nil || len(fields) == 0 {
return fmt.Errorf("one or more field value needs to be specified")
}
// limit overhead using builds instead of allBuilds, which returns the last 100 build
_, err := j.Jenkins.Requester.GetJSON(j.Base, &custom, map[string]string{"tree": "builds[" + strings.Join(fields, ",") + "]"})
if err != nil {
return err
}
return nil
}

// Returns All Builds with Number and URL
func (j *Job) GetAllBuildIds() ([]JobBuild, error) {
var buildsResp struct {
Expand Down

0 comments on commit 121d335

Please sign in to comment.