Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure that disabled warnings get passed to the logger in kubernetes agents #2698

Merged
merged 1 commit into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions clicommand/agent_start.go
Original file line number Diff line number Diff line change
Expand Up @@ -1296,8 +1296,8 @@ func agentLifecycleHook(hookName string, log logger.Logger, cfg AgentStartConfig

// pipe from hook output to logger
r, w := io.Pipe()
sh.Logger = &shell.WriterLogger{Writer: w, Ansi: !cfg.NoColor} // for Promptf
sh.Writer = w // for stdout+stderr
sh.Logger = shell.NewWriterLogger(w, !cfg.NoColor, nil) // for Promptf
sh.Writer = w // for stdout+stderr
var wg sync.WaitGroup
wg.Add(1)
go func() {
Expand Down
9 changes: 5 additions & 4 deletions internal/job/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -1150,18 +1150,19 @@ func (e *Executor) startKubernetesClient(ctx context.Context, kubernetesClient *
e.shell.Env.Set("BUILDKITE_AGENT_ACCESS_TOKEN", connect.AccessToken)
writer := io.MultiWriter(os.Stdout, kubernetesClient)
e.shell.Writer = writer
e.shell.Logger = &shell.WriterLogger{
Writer: writer,
Ansi: true,
}
e.shell.Logger = shell.NewWriterLogger(writer, true, e.DisabledWarnings)

return nil
})

if err != nil {
return fmt.Errorf("error connecting to kubernetes runner: %w", err)
}

if err := kubernetesClient.Await(ctx, kubernetes.RunStateStart); err != nil {
return fmt.Errorf("error waiting for client to become ready: %w", err)
}

go func() {
if err := kubernetesClient.Await(ctx, kubernetes.RunStateInterrupt); err != nil {
e.shell.Errorf("Error waiting for client interrupt: %v", err)
Expand Down
8 changes: 8 additions & 0 deletions internal/job/shell/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ type WriterLogger struct {
DisabledWarningIDs []string
}

func NewWriterLogger(writer io.Writer, ansi bool, disabledWarningIDs []string) *WriterLogger {
return &WriterLogger{
Writer: writer,
Ansi: ansi,
DisabledWarningIDs: disabledWarningIDs,
}
}

func (wl *WriterLogger) Write(b []byte) (int, error) {
wl.Printf("%s", b)
return len(b), nil
Expand Down
4 changes: 2 additions & 2 deletions internal/job/shell/logger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (

func TestAnsiLogger(t *testing.T) {
got := &bytes.Buffer{}
l := shell.WriterLogger{Writer: got, Ansi: false}
l := shell.NewWriterLogger(got, false, nil)

l.Headerf("Testing header: %q", "llamas")
l.Printf("Testing print: %q", "llamas")
Expand Down Expand Up @@ -44,7 +44,7 @@ func TestAnsiLogger(t *testing.T) {

func TestLoggerStreamer(t *testing.T) {
got := &bytes.Buffer{}
l := &shell.WriterLogger{Writer: got, Ansi: false}
l := shell.NewWriterLogger(got, false, nil)

streamer := shell.NewLoggerStreamer(l)
streamer.Prefix = "TEST>"
Expand Down
2 changes: 1 addition & 1 deletion internal/job/shell/shell_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func TestRun(t *testing.T) {
sh := newShellForTest(t)
sh.PTY = false
sh.Writer = out
sh.Logger = &shell.WriterLogger{Writer: out, Ansi: false}
sh.Logger = shell.NewWriterLogger(out, false, nil)

go func() {
call := <-sshKeygen.Ch
Expand Down
8 changes: 4 additions & 4 deletions jobapi/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -465,8 +465,8 @@ func TestDebugLogging(t *testing.T) {
assert.NilError(t, err)

logBuf := &bytes.Buffer{}
logger := shell.WriterLogger{Writer: logBuf, Ansi: true}
srv, token, err := jobapi.NewServer(&logger, sockName, env, nil, jobapi.WithDebug())
logger := shell.NewWriterLogger(logBuf, true, nil)
srv, token, err := jobapi.NewServer(logger, sockName, env, nil, jobapi.WithDebug())
assert.NilError(t, err)

assert.NilError(t, srv.Start())
Expand Down Expand Up @@ -511,8 +511,8 @@ func TestNoLogging(t *testing.T) {
assert.NilError(t, err)

logBuf := &bytes.Buffer{}
logger := shell.WriterLogger{Writer: logBuf, Ansi: true}
srv, token, err := jobapi.NewServer(&logger, sockName, env, nil)
logger := shell.NewWriterLogger(logBuf, true, nil)
srv, token, err := jobapi.NewServer(logger, sockName, env, nil)
assert.NilError(t, err)

assert.NilError(t, srv.Start())
Expand Down