Skip to content

Commit 83bc964

Browse files
authored
Merge pull request #318 from gitpod-io/wv/sbom-phase-timing
Track SBOM generation time in build output
2 parents 0b10eee + 2e8b180 commit 83bc964

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

pkg/leeway/build.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,9 +1252,12 @@ func (p *Package) build(buildctx *buildContext) (err error) {
12521252
// Generate SBOM if enabled (after packaging - written alongside artifact)
12531253
// SBOM files are stored outside the tar.gz to maintain artifact determinism.
12541254
if p.C.W.SBOM.Enabled {
1255+
pkgRep.phaseEnter[PackageBuildPhaseSBOM] = time.Now()
1256+
pkgRep.Phases = append(pkgRep.Phases, PackageBuildPhaseSBOM)
12551257
if err := writeSBOMToCache(buildctx, p, builddir); err != nil {
12561258
return err
12571259
}
1260+
pkgRep.phaseDone[PackageBuildPhaseSBOM] = time.Now()
12581261
}
12591262

12601263
// Register newly built package
@@ -1494,6 +1497,7 @@ const (
14941497
PackageBuildPhaseTest PackageBuildPhase = "test"
14951498
PackageBuildPhaseBuild PackageBuildPhase = "build"
14961499
PackageBuildPhasePackage PackageBuildPhase = "package"
1500+
PackageBuildPhaseSBOM PackageBuildPhase = "sbom"
14971501
)
14981502

14991503
type packageBuild struct {

pkg/leeway/reporter.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,12 @@ func (r *ConsoleReporter) PackageBuildFinished(pkg *Package, rep *PackageBuildRe
234234
var phaseDurations []string
235235
for _, phase := range rep.Phases {
236236
if d := rep.PhaseDuration(phase); d > 0 {
237-
phaseDurations = append(phaseDurations, fmt.Sprintf("%s: %.1fs", phase, d.Seconds()))
237+
phaseDurations = append(phaseDurations, fmt.Sprintf("%s %.1fs", phase, d.Seconds()))
238238
}
239239
}
240240
phaseDurStr := ""
241241
if len(phaseDurations) > 0 {
242-
phaseDurStr = color.Sprintf(" [%s]", strings.Join(phaseDurations, " | "))
242+
phaseDurStr = color.Sprintf(" (%s)", strings.Join(phaseDurations, ", "))
243243
}
244244

245245
var msg string
@@ -250,7 +250,7 @@ func (r *ConsoleReporter) PackageBuildFinished(pkg *Package, rep *PackageBuildRe
250250
if rep.TestCoverageAvailable {
251251
coverage = color.Sprintf("<fg=yellow>test coverage: %d%%</> <gray>(%d of %d functions have tests)</>\n", rep.TestCoveragePercentage, rep.FunctionsWithTest, rep.FunctionsWithTest+rep.FunctionsWithoutTest)
252252
}
253-
msg = color.Sprintf("%s<green>package build succeeded</> <gray>(%.2fs)%s</>\n", coverage, dur.Seconds(), phaseDurStr)
253+
msg = color.Sprintf("%s<green>package build succeeded</> <gray>in %.2fs%s</>\n", coverage, dur.Seconds(), phaseDurStr)
254254
}
255255
//nolint:errcheck
256256
io.WriteString(out, msg)

pkg/leeway/reporter_test.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,34 +38,37 @@ func TestConsoleReporter(t *testing.T) {
3838
r.PackageBuildStarted(pkg, "/tmp/build")
3939

4040
r.now = func() time.Time {
41-
return start.Add(5 * time.Second)
41+
return start.Add(6 * time.Second)
4242
}
4343
r.PackageBuildFinished(pkg, &PackageBuildReport{
4444
Phases: []PackageBuildPhase{
4545
PackageBuildPhasePrep,
4646
PackageBuildPhasePull,
4747
PackageBuildPhaseLint,
4848
PackageBuildPhaseTest,
49-
PackageBuildPhaseBuild},
49+
PackageBuildPhaseBuild,
50+
PackageBuildPhaseSBOM},
5051
phaseEnter: map[PackageBuildPhase]time.Time{
5152
PackageBuildPhasePrep: start,
5253
PackageBuildPhasePull: start.Add(time.Second),
5354
PackageBuildPhaseBuild: start.Add(2 * time.Second),
5455
PackageBuildPhaseTest: start.Add(3 * time.Second),
5556
PackageBuildPhaseLint: start.Add(4 * time.Second),
57+
PackageBuildPhaseSBOM: start.Add(5 * time.Second),
5658
},
5759
phaseDone: map[PackageBuildPhase]time.Time{
5860
PackageBuildPhasePrep: start.Add(time.Second),
5961
PackageBuildPhasePull: start.Add(2 * time.Second),
6062
PackageBuildPhaseBuild: start.Add(3 * time.Second),
6163
PackageBuildPhaseTest: start.Add(4 * time.Second),
6264
PackageBuildPhaseLint: start.Add(5 * time.Second),
65+
PackageBuildPhaseSBOM: start.Add(6 * time.Second),
6366
},
6467
})
6568
},
6669
Expect: Expectation{
6770
Output: `[test:test] build started (version unknown, builddir /tmp/build)
68-
[test:test] package build succeeded (5.00s) [prep: 1.0s | pull: 1.0s | lint: 1.0s | test: 1.0s | build: 1.0s]
71+
[test:test] package build succeeded in 6.00s (prep 1.0s, pull 1.0s, lint 1.0s, test 1.0s, build 1.0s, sbom 1.0s)
6972
`,
7073
},
7174
},
@@ -79,7 +82,7 @@ func TestConsoleReporter(t *testing.T) {
7982
},
8083
Expect: Expectation{
8184
Output: `[test:test] build started (version unknown, builddir /tmp/build)
82-
[test:test] package build succeeded (0.00s)
85+
[test:test] package build succeeded in 0.00s
8386
`,
8487
},
8588
},

0 commit comments

Comments
 (0)