mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-06 13:35:47 +02:00
* fix: add trackFailOnError option to control kubedog exit code behavior When kubedog release tracking fails (e.g. pod ImagePullBackOff), helmfile exits with code 0 instead of a non-zero exit code. Add a trackFailOnError configuration option (default: false) that when set to true, propagates kubedog tracking failures to the exit code. The option is available as: - Per-release YAML: trackFailOnError: true - CLI flag: --track-fail-on-error (sync and apply commands) Extract trackReleaseIfEnabled helper to consolidate kubedog tracking logic from two duplicated call sites into a single maintainable method. Fixes #2507 Signed-off-by: yxxhero <aiopsclub@163.com> * fix: add //go:build ignore to server.go to fix go test CI failure The test/integration/test-cases/issue-2103/input/server.go is a package main helper binary used by the issue-2103 integration test. When go test -coverprofile runs on this package, it fails with "go: no such tool covdata" in the CI environment. Adding //go:build ignore excludes the file from go list ./... (and therefore from PKGS in the Makefile), while still allowing the integration test to build it explicitly via file path: go build -o server ./path/to/server.go Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/8a7000af-72b7-48f8-8a82-24813b5df341 Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com> * fix: update TestGenerateID expected hashes after adding TrackFailOnError field Adding TrackFailOnError *bool to ReleaseSpec changed the spew serialization of the struct, which changed the FNV-32a hash values produced by generateValuesID. Update temp_test.go with the new expected hash strings. Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/caa86cd9-73d1-4894-b745-fd70c0811fd6 Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com> --------- Signed-off-by: yxxhero <aiopsclub@163.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
348 lines
5.4 KiB
Go
348 lines
5.4 KiB
Go
package app
|
|
|
|
import "go.uber.org/zap"
|
|
|
|
type ConfigProvider interface {
|
|
Args() string
|
|
HelmBinary() string
|
|
KustomizeBinary() string
|
|
EnableLiveOutput() bool
|
|
StripArgsValuesOnExitError() bool
|
|
DisableForceUpdate() bool
|
|
EnforcePluginVerification() bool
|
|
HelmOCIPlainHTTP() bool
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
SequentialHelmfiles() bool
|
|
|
|
FileOrDir() string
|
|
KubeContext() string
|
|
Namespace() string
|
|
Chart() string
|
|
Selectors() []string
|
|
StateValuesSet() map[string]any
|
|
StateValuesFiles() []string
|
|
Kubeconfig() string
|
|
Env() string
|
|
|
|
loggingConfig
|
|
}
|
|
|
|
type DepsConfigProvider interface {
|
|
Args() string
|
|
SkipRepos() bool
|
|
IncludeTransitiveNeeds() bool
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type ReposConfigProvider interface {
|
|
Args() string
|
|
IncludeTransitiveNeeds() bool
|
|
}
|
|
|
|
type ApplyConfigProvider interface {
|
|
Args() string
|
|
PostRenderer() string
|
|
PostRendererArgs() []string
|
|
SkipSchemaValidation() bool
|
|
Cascade() string
|
|
HideNotes() bool
|
|
TakeOwnership() bool
|
|
SuppressOutputLineRegex() []string
|
|
|
|
Values() []string
|
|
Set() []string
|
|
SkipCRDs() bool
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
Wait() bool
|
|
WaitRetries() int
|
|
WaitForJobs() bool
|
|
Timeout() int
|
|
|
|
IncludeTests() bool
|
|
|
|
Suppress() []string
|
|
SuppressSecrets() bool
|
|
ShowSecrets() bool
|
|
NoHooks() bool
|
|
SuppressDiff() bool
|
|
|
|
DetailedExitcode() bool
|
|
StripTrailingCR() bool
|
|
|
|
Color() bool
|
|
NoColor() bool
|
|
Context() int
|
|
DiffOutput() string
|
|
|
|
Validate() bool
|
|
SkipCleanup() bool
|
|
SkipDiffOnInstall() bool
|
|
|
|
DiffArgs() string
|
|
SyncArgs() string
|
|
|
|
SyncReleaseLabels() bool
|
|
|
|
DAGConfig
|
|
|
|
TrackMode() string
|
|
TrackTimeout() int
|
|
TrackLogs() bool
|
|
TrackFailOnError() bool
|
|
|
|
Description() string
|
|
|
|
concurrencyConfig
|
|
interactive
|
|
loggingConfig
|
|
valuesControlMode
|
|
}
|
|
|
|
type SyncConfigProvider interface {
|
|
Args() string
|
|
PostRenderer() string
|
|
SkipSchemaValidation() bool
|
|
PostRendererArgs() []string
|
|
HideNotes() bool
|
|
TakeOwnership() bool
|
|
Cascade() string
|
|
|
|
Values() []string
|
|
Set() []string
|
|
SkipCRDs() bool
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
Wait() bool
|
|
WaitRetries() int
|
|
WaitForJobs() bool
|
|
Timeout() int
|
|
SyncArgs() string
|
|
|
|
Validate() bool
|
|
|
|
SkipNeeds() bool
|
|
IncludeNeeds() bool
|
|
IncludeTransitiveNeeds() bool
|
|
|
|
SyncReleaseLabels() bool
|
|
TrackMode() string
|
|
TrackTimeout() int
|
|
TrackLogs() bool
|
|
TrackFailOnError() bool
|
|
|
|
Description() string
|
|
|
|
DAGConfig
|
|
|
|
concurrencyConfig
|
|
interactive
|
|
loggingConfig
|
|
valuesControlMode
|
|
}
|
|
|
|
type DiffConfigProvider interface {
|
|
Args() string
|
|
PostRenderer() string
|
|
PostRendererArgs() []string
|
|
SkipSchemaValidation() bool
|
|
SuppressOutputLineRegex() []string
|
|
|
|
Values() []string
|
|
Set() []string
|
|
Validate() bool
|
|
SkipCRDs() bool
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
|
|
IncludeTests() bool
|
|
|
|
Suppress() []string
|
|
SuppressSecrets() bool
|
|
ShowSecrets() bool
|
|
NoHooks() bool
|
|
SuppressDiff() bool
|
|
SkipDiffOnInstall() bool
|
|
DiffArgs() string
|
|
|
|
DAGConfig
|
|
|
|
DetailedExitcode() bool
|
|
StripTrailingCR() bool
|
|
Color() bool
|
|
NoColor() bool
|
|
Context() int
|
|
DiffOutput() string
|
|
TakeOwnership() bool
|
|
|
|
concurrencyConfig
|
|
valuesControlMode
|
|
}
|
|
|
|
type DestroyConfigProvider interface {
|
|
Args() string
|
|
Cascade() string
|
|
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
SkipCharts() bool
|
|
DeleteWait() bool
|
|
DeleteTimeout() int
|
|
|
|
interactive
|
|
loggingConfig
|
|
concurrencyConfig
|
|
}
|
|
|
|
type TestConfigProvider interface {
|
|
Args() string
|
|
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
Timeout() int
|
|
Cleanup() bool
|
|
Logs() bool
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type LintConfigProvider interface {
|
|
Args() string
|
|
|
|
Values() []string
|
|
Set() []string
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
SkipCleanup() bool
|
|
|
|
DAGConfig
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type UnittestConfigProvider interface {
|
|
Args() string
|
|
|
|
Values() []string
|
|
Set() []string
|
|
FailFast() bool
|
|
Color() bool
|
|
DebugPlugin() bool
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
SkipCleanup() bool
|
|
|
|
DAGConfig
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type FetchConfigProvider interface {
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
OutputDir() string
|
|
OutputDirTemplate() string
|
|
WriteOutput() bool
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type TemplateConfigProvider interface {
|
|
Args() string
|
|
PostRenderer() string
|
|
PostRendererArgs() []string
|
|
SkipSchemaValidation() bool
|
|
|
|
Values() []string
|
|
Set() []string
|
|
OutputDirTemplate() string
|
|
Validate() bool
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
SkipCleanup() bool
|
|
SkipTests() bool
|
|
OutputDir() string
|
|
IncludeCRDs() bool
|
|
NoHooks() bool
|
|
KubeVersion() string
|
|
ShowOnly() []string
|
|
|
|
DAGConfig
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type DAGConfig interface {
|
|
SkipNeeds() bool
|
|
IncludeNeeds() bool
|
|
IncludeTransitiveNeeds() bool
|
|
EnforceNeedsAreInstalled() bool
|
|
}
|
|
|
|
type WriteValuesConfigProvider interface {
|
|
Values() []string
|
|
Set() []string
|
|
OutputFileTemplate() string
|
|
SkipDeps() bool
|
|
SkipRefresh() bool
|
|
SkipCleanup() bool
|
|
IncludeTransitiveNeeds() bool
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type StatusesConfigProvider interface {
|
|
Args() string
|
|
|
|
concurrencyConfig
|
|
}
|
|
|
|
type StateConfigProvider interface {
|
|
EmbedValues() bool
|
|
}
|
|
|
|
type DAGConfigProvider any
|
|
|
|
type concurrencyConfig interface {
|
|
Concurrency() int
|
|
}
|
|
|
|
type loggingConfig interface {
|
|
Logger() *zap.SugaredLogger
|
|
}
|
|
|
|
type interactive interface {
|
|
Interactive() bool
|
|
}
|
|
|
|
type ListConfigProvider interface {
|
|
Output() string
|
|
SkipCharts() bool
|
|
}
|
|
|
|
type CacheConfigProvider any
|
|
|
|
type InitConfigProvider interface {
|
|
Force() bool
|
|
}
|
|
|
|
type CreateConfigProvider interface {
|
|
Name() string
|
|
OutputDir() string
|
|
Force() bool
|
|
|
|
loggingConfig
|
|
}
|
|
|
|
type PrintEnvConfigProvider interface {
|
|
Output() string
|
|
}
|
|
|
|
// reset/reuse values helm cli flags handling for apply/sync/diff
|
|
type valuesControlMode interface {
|
|
ReuseValues() bool
|
|
ResetValues() bool
|
|
}
|