diff --git a/build/ci.go b/build/ci.go index afe1c332b8..c272d3f2b9 100644 --- a/build/ci.go +++ b/build/ci.go @@ -366,7 +366,7 @@ func doLint(cmdline []string) { linter := downloadLinter(*cachedir) lflags := []string{"run", "--config", ".golangci.yml"} - build.MustRunCommand(linter, append(lflags, packages...)...) + build.MustRunCommandWithOutput(linter, append(lflags, packages...)...) fmt.Println("You have achieved perfection.") } diff --git a/internal/build/util.go b/internal/build/util.go index 5c77b236dc..17928118a0 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -68,6 +68,25 @@ func MustRunCommand(cmd string, args ...string) { MustRun(exec.Command(cmd, args...)) } +func MustRunCommandWithOutput(cmd string, args ...string) { + var done chan bool + // This is a little loop to generate some output, so CI does not tear down the + // process after 300 seconds. + go func() { + for i := 0; i < 15; i++ { + fmt.Printf("Waiting for command %q\n", cmd) + select { + case <-time.After(time.Minute): + break + case <-done: + return + } + } + }() + MustRun(exec.Command(cmd, args...)) + close(done) +} + var warnedAboutGit bool // RunGit runs a git subcommand and returns its output.