diff --git a/.golangci.yml b/.golangci.yml index c350f021..b4004bfb 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -23,7 +23,6 @@ linters: - dupl - errcheck - exhaustive - - exportloopref - gocognit - gocritic - gocyclo diff --git a/internal/agent/main.go b/internal/agent/main.go index 7c9c87b6..35acace8 100644 --- a/internal/agent/main.go +++ b/internal/agent/main.go @@ -159,6 +159,11 @@ func Run(args []string) { } }() + // Prevent SENTRY_DSN propagation to scripts + if err := os.Unsetenv("SENTRY_DSN"); err != nil { + log.Printf("Failed to unset SENTRY_DSN: %v", err) + } + // Connect to the RPC server md := metadata.New(map[string]string{ "org.cirruslabs.task-id": *taskIdPtr, diff --git a/internal/executor/instance/persistentworker/remoteagent/remoteagent.go b/internal/executor/instance/persistentworker/remoteagent/remoteagent.go index 8c87e7c6..8d759068 100644 --- a/internal/executor/instance/persistentworker/remoteagent/remoteagent.go +++ b/internal/executor/instance/persistentworker/remoteagent/remoteagent.go @@ -13,6 +13,7 @@ import ( "golang.org/x/crypto/ssh" "io" "net" + "os" "strings" "time" ) @@ -122,6 +123,11 @@ func WaitForAgent( return fmt.Errorf("%w: failed to start a shell: %v", ErrFailed, err) } + // Passthrough SENTRY_DSN when it's set + if sentryDSN, ok := os.LookupEnv("SENTRY_DSN"); ok { + env["SENTRY_DSN"] = sentryDSN + } + for key, value := range env { _, err = stdinBuf.Write([]byte(fmt.Sprintf("export %s=%s\n", key, value))) if err != nil {