fix: Fix broken trackLogs functionality in Kubedog tracker (#2630)

* fix: Fix broken `trackLogs` functionality in Kubedog tracker

When using helmfile with the following setup

```
releases:
  - name: my-app
    chart: ./mychart
    trackMode: kubedog
    trackLogs: true
    trackFailOnError: true
```

We don't actually see any logs from the container being printed.

This is because when building the options for the Kubedog tracker, we never
specify `SaveLogsOnlyForNumberOfReplicas` which means this defaults to 0.

Looking at the logic in `pkg/tracker/deployment/tracker.go` we see

```
ignoreLogs := job.ignoreLogs || job.savingLogsReplicas >= job.SaveLogsOnlyForNumberOfReplicas
```

With job.SaveLogsOnlyForNumberOfReplicas always defaulting to 0, this will always ignore logs

This change sets it to a reasonable default of tracking logs from up to 10 pods.

Signed-off-by: Graeme Gillies <ggillies@gitlab.com>

* fix formatting

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Graeme Gillies <ggillies@gitlab.com>

* feat: Refactor out building tracker opts into it's own function, add tests

Signed-off-by: Graeme Gillies <ggillies@gitlab.com>

---------

Signed-off-by: Graeme Gillies <ggillies@gitlab.com>
Co-authored-by: Graeme Gillies <ggillies@gitlab.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Graeme Gillies
2026-06-11 17:17:28 +08:00
committed by GitHub
co-authored by Copilot Autofix powered by AI Graeme Gillies
parent f4686027ff
commit 94e14f3b4e
2 changed files with 56 additions and 6 deletions
+29
View File
@@ -1,6 +1,7 @@
package kubedog
import (
"context"
"math"
"os"
"testing"
@@ -275,3 +276,31 @@ users:
assert.NotNil(t, tr)
}
}
func TestBuildTrackerOptions_LogsEnabled(t *testing.T) {
tr := &Tracker{
trackOptions: NewTrackOptions().WithLogs(true),
}
opts := tr.buildTrackerOptions(context.Background())
// With logs enabled, kubedog must be told to stream logs and to save logs
// for a positive number of replicas, otherwise log output is silently
// suppressed.
assert.False(t, opts.IgnoreLogs)
assert.Equal(t, defaultSaveLogsReplicas, opts.SaveLogsOnlyForNumberOfReplicas)
assert.Equal(t, 5*time.Minute, opts.Timeout)
}
func TestBuildTrackerOptions_LogsDisabled(t *testing.T) {
tr := &Tracker{
trackOptions: NewTrackOptions().WithLogs(false),
}
opts := tr.buildTrackerOptions(context.Background())
// With logs disabled, kubedog should ignore logs and not save any replicas'
// logs (leaving the default zero value).
assert.True(t, opts.IgnoreLogs)
assert.Zero(t, opts.SaveLogsOnlyForNumberOfReplicas)
}