-
Notifications
You must be signed in to change notification settings - Fork 0
/
prow.go
52 lines (44 loc) · 966 Bytes
/
prow.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package prow
import (
"context"
"log"
"net/url"
"time"
prowio "k8s.io/test-infra/prow/io"
)
type Build struct {
buildData
}
func GetJobHistory(from time.Duration, jobURL string) ([]Build, error) {
var builds []Build
u, err := url.Parse(jobURL)
if err != nil {
return builds, err
}
ctx := context.TODO()
opener, err := prowio.NewOpener(ctx, "", "")
if err != nil {
return builds, err
}
cutoff := time.Now().Add(-from).UTC()
nextURL := u
for {
fetchStarted := time.Now()
hist, err := getJobHistory(ctx, nextURL, opener)
log.Printf("fetched job history from %s (%vs)", nextURL, time.Since(fetchStarted)/time.Second)
if err != nil {
return builds, err
}
for _, build := range hist.Builds {
if build.Started.Before(cutoff) {
return builds, nil
}
builds = append(builds, Build{buildData: build})
}
olderURL, err := url.Parse(hist.OlderLink)
if err != nil {
return builds, err
}
nextURL = olderURL
}
}