Skip to content

Commit 76587bd

Browse files
committed
fix(build): Show logs when build fails in prebuild phases
Fixes #95. When builds fail during prebuild phases (INSTALL, PRE_BUILD, etc.), users now see the relevant error logs instead of just a spinner. This helps users understand failures like malformed app.json or apppack.toml files. The implementation checks CodeBuild status (FAILED, STOPPED, TIMED_OUT) during prebuild phases and streams logs when failures are detected. This preserves existing UX for successful builds while providing error visibility for failures.
1 parent 8e84f45 commit 76587bd

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

cmd/build.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,14 @@ func watchBuildPhase(a *app.App, buildStatus *app.BuildStatus) error {
409409
go StreamEvents(a.Session, buildStatus.Build.Logs, aws.String("build"), stopTailing)
410410
}
411411
} else if *build.CurrentPhase == "SUBMITTED" || *build.CurrentPhase == "QUEUED" || *build.CurrentPhase == "PROVISIONING" || *build.CurrentPhase == "DOWNLOAD_SOURCE" || *build.CurrentPhase == "INSTALL" || *build.CurrentPhase == "PRE_BUILD" {
412+
if build.BuildStatus != nil && (*build.BuildStatus == "FAILED" || *build.BuildStatus == "STOPPED" || *build.BuildStatus == "TIMED_OUT") {
413+
ui.Spinner.Stop()
414+
fmt.Printf("Build failed during %s phase, showing logs:\n", strings.ToLower(strings.ReplaceAll(*build.CurrentPhase, "_", " ")))
415+
if strings.HasPrefix(buildStatus.Build.Logs, "s3://") {
416+
return S3Log(a.Session, buildStatus.Build.Logs)
417+
}
418+
return StreamEvents(a.Session, buildStatus.Build.Logs, nil, nil)
419+
}
412420
ui.StartSpinner()
413421
caser := cases.Title(language.English)
414422
ui.Spinner.Suffix = fmt.Sprintf(" CodeBuild phase: %s", caser.String(strings.ToLower(strings.ReplaceAll(*build.CurrentPhase, "_", " "))))

0 commit comments

Comments
 (0)