// TryResultFromBuildbucket returns a new TryResult based on a buildbucket.Build. func TryResultFromBuildbucket(b *buildbucket.Build) (*TryResult, error) { var params struct { Builder string `json:"builder_name"` } if err := json.Unmarshal([]byte(b.ParametersJson), ¶ms); err != nil { return nil, err } created, err := strconv.ParseInt(b.CreatedTimestamp, 10, 64) if err != nil { return nil, err } return &TryResult{ Builder: params.Builder, Created: util.UnixMillisToTime(created), Result: b.Result, Status: b.Status, Url: b.Url, }, nil }
// buildFromCommit builds a buildbot.Build from the commit and the info // returned from the Apiary API. It also returns a key that uniqely identifies // this build. func buildFromCommit(build *androidbuildinternal.Build, commit *vcsinfo.ShortCommit) (string, *buildbot.Build) { codename := util.StringToCodeName(build.Target.Name) key := build.Branch + ":" + build.Target.Name + ":" + build.BuildId b := &buildbot.Build{ Builder: codename, Master: FAKE_MASTER, Number: 0, BuildSlave: FAKE_BUILDSLAVE, Branch: "master", Commits: nil, GotRevision: commit.Hash, Properties: [][]interface{}{ []interface{}{"androidinternal_buildid", build.BuildId, "tradefed"}, []interface{}{"buildbotURL", "https://internal.skia.org/", "tradefed"}, }, PropertiesStr: "", Results: buildbot.BUILDBOT_FAILURE, Steps: nil, Started: util.UnixMillisToTime(build.CreationTimestamp), Comments: nil, Repository: "https://skia.googlesource.com/skia.git", } // Fill in PropertiesStr based on Properties. props, err := json.Marshal(b.Properties) if err == nil { b.PropertiesStr = string(props) } else { glog.Errorf("Failed to encode properties: %s", err) } if build.Successful { b.Results = buildbot.BUILDBOT_SUCCESS } // Only fill in Finished if the build has completed. if isFinished(build) { b.Finished = time.Now().UTC() } return key, b }