Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
a81be0b
created roadmap and yaml claude agent
NoaheCampbell Sep 9, 2025
e094802
Update roadmap.md
NoaheCampbell Sep 9, 2025
9dc7baa
chore(deps): bump sigstore/cosign-installer from 3.9.2 to 3.10.0 (#1857)
dependabot[bot] Sep 16, 2025
4551bc2
chore(deps): bump the security group with 2 updates (#1858)
dependabot[bot] Sep 16, 2025
b8c3a65
chore(deps): bump helm.sh/helm/v3 from 3.18.6 to 3.19.0 in /examples/…
dependabot[bot] Sep 16, 2025
b3bd61a
Add cron job support bundle scheduler
bennyyang11 Sep 17, 2025
05bb234
fixing bugbot
bennyyang11 Sep 17, 2025
fbf7632
cd /Users/benjaminyang/Projects/troubleshoot && git branch -rMerge re…
bennyyang11 Sep 17, 2025
449ea24
Merge v1beta3 into cron-job-clean to resolve conflicts
bennyyang11 Sep 17, 2025
850db64
Fix all bugbot errors: auto-update stability, job cooldown timing, an…
bennyyang11 Sep 17, 2025
380b887
Deleting Agent
bennyyang11 Sep 17, 2025
eeb3471
removed unused flags
bennyyang11 Sep 17, 2025
08ca67f
fixing auto-upload
bennyyang11 Sep 17, 2025
4877b20
Merge branch 'v1beta3' into cron-job-clean
bennyyang11 Sep 17, 2025
69972d2
fixing markdown files
bennyyang11 Sep 17, 2025
67d80df
Merge branch 'cron-job-clean' of https://github.com/replicatedhq/trou…
bennyyang11 Sep 17, 2025
2489951
namespace not required flag for auto collectors to work
NoaheCampbell Sep 17, 2025
200a0a3
loosened cron job validation
NoaheCampbell Sep 17, 2025
3cab8f7
writes logs to logfile
NoaheCampbell Sep 17, 2025
a0be537
Merge v1beta3 into cron-job-clean
bennyyang11 Sep 30, 2025
723d0ec
fix: resolve autoFromEnv variable scoping issue for CI
bennyyang11 Sep 30, 2025
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
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,10 @@ sbom/
# Ignore generated support bundles
*.tar.gz
!testdata/supportbundle/*.tar.gz

# Ignore built binaries
troubleshoot
troubleshoot-test
cmd/troubleshoot/troubleshoot
cmd/*/troubleshoot
support-bundle
1,695 changes: 1,695 additions & 0 deletions Cron-Job-Support-Bundles-PRD.md

Large diffs are not rendered by default.

34 changes: 20 additions & 14 deletions cmd/troubleshoot/cli/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,21 +43,25 @@ If no arguments are provided, specs are automatically loaded from the cluster by
}

// Auto-update support-bundle unless disabled by flag or env
envAuto := os.Getenv("TROUBLESHOOT_AUTO_UPDATE")
autoFromEnv := true
if envAuto != "" {
if strings.EqualFold(envAuto, "0") || strings.EqualFold(envAuto, "false") {
autoFromEnv = false
// Only run auto-update for the root support-bundle command, not subcommands
if cmd.Name() == "support-bundle" && !cmd.HasParent() {
envAuto := os.Getenv("TROUBLESHOOT_AUTO_UPDATE")
autoFromEnv := true
if envAuto != "" {
if strings.EqualFold(envAuto, "0") || strings.EqualFold(envAuto, "false") {
autoFromEnv = false
}
}
}
if v.GetBool("auto-update") && autoFromEnv {
exe, err := os.Executable()
if err == nil {
_ = updater.CheckAndUpdate(cmd.Context(), updater.Options{
BinaryName: "support-bundle",
CurrentPath: exe,
Printf: func(f string, a ...interface{}) { fmt.Fprintf(os.Stderr, f, a...) },
})

if v.GetBool("auto-update") && autoFromEnv {
exe, err := os.Executable()
if err == nil {
_ = updater.CheckAndUpdate(cmd.Context(), updater.Options{
BinaryName: "support-bundle",
CurrentPath: exe,
Printf: func(f string, a ...interface{}) { fmt.Fprintf(os.Stderr, f, a...) },
})
}
}
}
},
Expand Down Expand Up @@ -103,11 +107,13 @@ If no arguments are provided, specs are automatically loaded from the cluster by
cmd.AddCommand(Analyze())
cmd.AddCommand(Redact())
cmd.AddCommand(Diff())
cmd.AddCommand(Schedule())
cmd.AddCommand(UploadCmd())
cmd.AddCommand(util.VersionCmd())

cmd.Flags().StringSlice("redactors", []string{}, "names of the additional redactors to use")
cmd.Flags().Bool("redact", true, "enable/disable default redactions")

cmd.Flags().Bool("interactive", true, "enable/disable interactive mode")
cmd.Flags().Bool("collect-without-permissions", true, "always generate a support bundle, even if it some require additional permissions")
cmd.Flags().StringSliceP("selector", "l", []string{"troubleshoot.sh/kind=support-bundle"}, "selector to filter on for loading additional support bundle specs found in secrets within the cluster")
Expand Down
11 changes: 11 additions & 0 deletions cmd/troubleshoot/cli/schedule.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package cli

import (
"github.com/replicatedhq/troubleshoot/pkg/schedule"
"github.com/spf13/cobra"
)

// Schedule returns the schedule command for managing scheduled support bundle jobs
func Schedule() *cobra.Command {
return schedule.CLI()
}
47 changes: 23 additions & 24 deletions examples/sdk/helm-template/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,27 @@ replace github.com/replicatedhq/troubleshoot v0.0.0 => ../../../

require (
github.com/replicatedhq/troubleshoot v0.0.0
helm.sh/helm/v3 v3.18.6
helm.sh/helm/v3 v3.19.0
sigs.k8s.io/yaml v1.6.0
)

require (
dario.cat/mergo v1.0.2 // indirect
github.com/BurntSushi/toml v1.5.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.3.0 // indirect
github.com/Masterminds/semver/v3 v3.4.0 // indirect
github.com/Masterminds/sprig/v3 v3.3.0 // indirect
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.1 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/gnostic-models v0.6.9 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/huandu/xstrings v1.5.0 // indirect
Expand All @@ -40,35 +39,35 @@ require (
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
github.com/shopspring/decimal v1.4.0 // indirect
github.com/spf13/cast v1.7.1 // indirect
github.com/spf13/cast v1.10.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.yaml.in/yaml/v2 v2.4.2 // indirect
go.yaml.in/yaml/v3 v3.0.3 // indirect
golang.org/x/crypto v0.41.0 // indirect
golang.org/x/net v0.43.0 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.42.0 // indirect
golang.org/x/net v0.44.0 // indirect
golang.org/x/oauth2 v0.30.0 // indirect
golang.org/x/sys v0.35.0 // indirect
golang.org/x/term v0.34.0 // indirect
golang.org/x/text v0.28.0 // indirect
golang.org/x/time v0.11.0 // indirect
golang.org/x/sys v0.36.0 // indirect
golang.org/x/term v0.35.0 // indirect
golang.org/x/text v0.29.0 // indirect
golang.org/x/time v0.12.0 // indirect
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.33.4 // indirect
k8s.io/apiextensions-apiserver v0.33.4 // indirect
k8s.io/apimachinery v0.33.4 // indirect
k8s.io/client-go v0.33.4 // indirect
k8s.io/api v0.34.1 // indirect
k8s.io/apiextensions-apiserver v0.34.1 // indirect
k8s.io/apimachinery v0.34.1 // indirect
k8s.io/client-go v0.34.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
sigs.k8s.io/controller-runtime v0.21.0 // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
sigs.k8s.io/controller-runtime v0.22.1 // indirect
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
)
Loading
Loading