diff --git a/pkg/executor/build.go b/pkg/executor/build.go index 59632cf5d..a9414661a 100644 --- a/pkg/executor/build.go +++ b/pkg/executor/build.go @@ -390,7 +390,11 @@ func DoBuild(opts *config.KanikoOptions) (v1.Image, error) { logrus.Warnf("Unable to create benchmarking file %s: %s", benchmarkFile, err) } defer f.Close() - f.WriteString(timing.Summary()) + s, err := timing.JSON() + if err != nil { + logrus.Warnf("Unable to write benchmark file: %s", err) + } + f.WriteString(s) } return sourceImage, nil } diff --git a/pkg/timing/timing.go b/pkg/timing/timing.go index cb340a9b9..edbc1a4f7 100644 --- a/pkg/timing/timing.go +++ b/pkg/timing/timing.go @@ -18,6 +18,7 @@ package timing import ( "bytes" + "encoding/json" "sync" "text/template" "time" @@ -77,6 +78,10 @@ func Summary() string { return DefaultRun.Summary() } +func JSON() (string, error) { + return DefaultRun.JSON() +} + // Summary outputs a summary of the specified TimedRun. func (tr *TimedRun) Summary() string { b := bytes.Buffer{} @@ -86,3 +91,11 @@ func (tr *TimedRun) Summary() string { DefaultFormat.Execute(&b, tr.categories) return b.String() } + +func (tr *TimedRun) JSON() (string, error) { + b, err := json.Marshal(tr.categories) + if err != nil { + return "", err + } + return string(b), nil +}