parent
9cc0cff07f
commit
36c91c5427
|
|
@ -25,4 +25,4 @@ jobs:
|
||||||
- name: Golangci lint
|
- name: Golangci lint
|
||||||
uses: golangci/golangci-lint-action@v3
|
uses: golangci/golangci-lint-action@v3
|
||||||
with:
|
with:
|
||||||
version: v1.48.0
|
version: v1.50.1
|
||||||
|
|
|
||||||
|
|
@ -257,34 +257,35 @@ linters:
|
||||||
enable:
|
enable:
|
||||||
- bodyclose
|
- bodyclose
|
||||||
- depguard
|
- depguard
|
||||||
# - dogsled
|
- usestdlibvars
|
||||||
# - dupl
|
- reassign
|
||||||
- errcheck
|
- errcheck
|
||||||
- funlen
|
- funlen
|
||||||
- gocognit
|
- gocognit
|
||||||
- goconst
|
- goconst
|
||||||
# - gocritic
|
|
||||||
# - godox
|
|
||||||
- gofmt
|
- gofmt
|
||||||
- goimports
|
- goimports
|
||||||
- revive
|
- revive
|
||||||
# - gosec
|
|
||||||
- gosimple
|
- gosimple
|
||||||
- govet
|
- govet
|
||||||
- ineffassign
|
- ineffassign
|
||||||
# - interfacer
|
|
||||||
- misspell
|
- misspell
|
||||||
- nakedret
|
- nakedret
|
||||||
- exportloopref
|
- exportloopref
|
||||||
- staticcheck
|
- staticcheck
|
||||||
- structcheck
|
|
||||||
# - stylecheck
|
|
||||||
- typecheck
|
- typecheck
|
||||||
- unconvert
|
- unconvert
|
||||||
- unparam
|
- unparam
|
||||||
- unused
|
- unused
|
||||||
- whitespace
|
- whitespace
|
||||||
- gci
|
- gci
|
||||||
|
# - gocritic
|
||||||
|
# - godox
|
||||||
|
# - gosec
|
||||||
|
# - interfacer
|
||||||
|
# - stylecheck
|
||||||
|
# - dogsled
|
||||||
|
# - dupl
|
||||||
# don't enable:
|
# don't enable:
|
||||||
# - deadcode
|
# - deadcode
|
||||||
# - gochecknoglobals
|
# - gochecknoglobals
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ func TestDownloadfile(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "download 404",
|
name: "download 404",
|
||||||
handler: func(w http.ResponseWriter, r *http.Request) {
|
handler: func(w http.ResponseWriter, r *http.Request) {
|
||||||
w.WriteHeader(404)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
fmt.Fprint(w, "not found")
|
fmt.Fprint(w, "not found")
|
||||||
},
|
},
|
||||||
wantError: "download .*? error, code: 404",
|
wantError: "download .*? error, code: 404",
|
||||||
|
|
@ -38,7 +38,7 @@ func TestDownloadfile(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "download 500",
|
name: "download 500",
|
||||||
handler: func(w http.ResponseWriter, r *http.Request) {
|
handler: func(w http.ResponseWriter, r *http.Request) {
|
||||||
w.WriteHeader(500)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
fmt.Fprint(w, "server error")
|
fmt.Fprint(w, "server error")
|
||||||
},
|
},
|
||||||
wantError: "download .*? error, code: 500",
|
wantError: "download .*? error, code: 500",
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,6 @@ func redactedURL(chart string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// New for running helm commands
|
// New for running helm commands
|
||||||
// nolint: golint
|
|
||||||
func New(helmBinary string, enableLiveOutput bool, logger *zap.SugaredLogger, kubeContext string, runner Runner) *execer {
|
func New(helmBinary string, enableLiveOutput bool, logger *zap.SugaredLogger, kubeContext string, runner Runner) *execer {
|
||||||
// TODO: proper error handling
|
// TODO: proper error handling
|
||||||
version, err := GetHelmVersion(helmBinary, runner)
|
version, err := GetHelmVersion(helmBinary, runner)
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ func (mock *mockRunner) Execute(cmd string, args []string, env map[string]string
|
||||||
return mock.output, mock.err
|
return mock.output, mock.err
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint: golint
|
|
||||||
func MockExecer(logger *zap.SugaredLogger, kubeContext string) *execer {
|
func MockExecer(logger *zap.SugaredLogger, kubeContext string) *execer {
|
||||||
execer := New("helm", false, logger, kubeContext, &mockRunner{})
|
execer := New("helm", false, logger, kubeContext, &mockRunner{})
|
||||||
return execer
|
return execer
|
||||||
|
|
|
||||||
|
|
@ -279,7 +279,6 @@ type chartDependencyManager struct {
|
||||||
writeFile func(string, []byte, os.FileMode) error
|
writeFile func(string, []byte, os.FileMode) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint: golint
|
|
||||||
func NewChartDependencyManager(name string, logger *zap.SugaredLogger, lockFilePath string) *chartDependencyManager {
|
func NewChartDependencyManager(name string, logger *zap.SugaredLogger, lockFilePath string) *chartDependencyManager {
|
||||||
return &chartDependencyManager{
|
return &chartDependencyManager{
|
||||||
Name: name,
|
Name: name,
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ const (
|
||||||
DefaultHelmBinary = "helm"
|
DefaultHelmBinary = "helm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// nolint: golint
|
|
||||||
type StateLoadError struct {
|
type StateLoadError struct {
|
||||||
msg string
|
msg string
|
||||||
Cause error
|
Cause error
|
||||||
|
|
@ -306,12 +305,14 @@ func (c *StateCreator) scatterGatherEnvSecretFiles(st *HelmState, envSecretFiles
|
||||||
results <- secretResult{secret.id, nil, err, secret.path}
|
results <- secretResult{secret.id, nil, err, secret.path}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint: staticcheck
|
// nolint: staticcheck
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := c.fs.DeleteFile(decFile); err != nil {
|
if err := c.fs.DeleteFile(decFile); err != nil {
|
||||||
c.logger.Warnf("removing decrypted file %s: %w", decFile, err)
|
c.logger.Warnf("removing decrypted file %s: %w", decFile, err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
bytes, err := c.fs.ReadFile(decFile)
|
bytes, err := c.fs.ReadFile(decFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
results <- secretResult{secret.id, nil, fmt.Errorf("failed to load environment secrets file \"%s\": %v", secret.path, err), secret.path}
|
results <- secretResult{secret.id, nil, fmt.Errorf("failed to load environment secrets file \"%s\": %v", secret.path, err), secret.path}
|
||||||
|
|
|
||||||
|
|
@ -17,18 +17,16 @@ type Dependency struct {
|
||||||
Alias string `yaml:"alias"`
|
Alias string `yaml:"alias"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint: unparam
|
func (st *HelmState) appendHelmXFlags(flags []string, release *ReleaseSpec) []string {
|
||||||
func (st *HelmState) appendHelmXFlags(flags []string, release *ReleaseSpec) ([]string, error) {
|
|
||||||
for _, adopt := range release.Adopt {
|
for _, adopt := range release.Adopt {
|
||||||
flags = append(flags, "--adopt", adopt)
|
flags = append(flags, "--adopt", adopt)
|
||||||
}
|
}
|
||||||
|
|
||||||
return flags, nil
|
return flags
|
||||||
}
|
}
|
||||||
|
|
||||||
// append post-renderer flags to helm flags
|
// append post-renderer flags to helm flags
|
||||||
// nolint: unparam
|
func (st *HelmState) appendPostRenderFlags(flags []string, release *ReleaseSpec, helm helmexec.Interface) []string {
|
||||||
func (st *HelmState) appendPostRenderFlags(flags []string, release *ReleaseSpec, helm helmexec.Interface) ([]string, error) {
|
|
||||||
if helm.IsHelm3() {
|
if helm.IsHelm3() {
|
||||||
switch {
|
switch {
|
||||||
// helm.GetPostRenderer() comes from cmd flag.
|
// helm.GetPostRenderer() comes from cmd flag.
|
||||||
|
|
@ -40,7 +38,7 @@ func (st *HelmState) appendPostRenderFlags(flags []string, release *ReleaseSpec,
|
||||||
flags = append(flags, "--post-renderer", *st.HelmDefaults.PostRenderer)
|
flags = append(flags, "--post-renderer", *st.HelmDefaults.PostRenderer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return flags, nil
|
return flags
|
||||||
}
|
}
|
||||||
|
|
||||||
type Chartify struct {
|
type Chartify struct {
|
||||||
|
|
|
||||||
|
|
@ -1141,10 +1141,12 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
|
||||||
isLocal := st.fs.DirectoryExistsAt(normalizeChart(st.basePath, chartName))
|
isLocal := st.fs.DirectoryExistsAt(normalizeChart(st.basePath, chartName))
|
||||||
|
|
||||||
chartification, clean, err := st.PrepareChartify(helm, release, chartPath, workerIndex)
|
chartification, clean, err := st.PrepareChartify(helm, release, chartPath, workerIndex)
|
||||||
|
|
||||||
if !opts.SkipCleanup {
|
if !opts.SkipCleanup {
|
||||||
// nolint: staticcheck
|
// nolint: staticcheck
|
||||||
defer clean()
|
defer clean()
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
results <- &chartPrepareResult{err: err}
|
results <- &chartPrepareResult{err: err}
|
||||||
return
|
return
|
||||||
|
|
@ -1256,7 +1258,6 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
|
||||||
chartPath = filepath.Dir(fullChartPath)
|
chartPath = filepath.Dir(fullChartPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
results <- &chartPrepareResult{
|
results <- &chartPrepareResult{
|
||||||
releaseName: release.Name,
|
releaseName: release.Name,
|
||||||
chartName: chartName,
|
chartName: chartName,
|
||||||
|
|
@ -2515,16 +2516,9 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
|
||||||
|
|
||||||
flags = st.appendConnectionFlags(flags, helm, release)
|
flags = st.appendConnectionFlags(flags, helm, release)
|
||||||
|
|
||||||
var err error
|
flags = st.appendHelmXFlags(flags, release)
|
||||||
flags, err = st.appendHelmXFlags(flags, release)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
flags, err = st.appendPostRenderFlags(flags, release, helm)
|
flags = st.appendPostRenderFlags(flags, release, helm)
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
common, clean, err := st.namespaceAndValuesFlags(helm, release, workerIndex)
|
common, clean, err := st.namespaceAndValuesFlags(helm, release, workerIndex)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -2545,18 +2539,11 @@ func (st *HelmState) flagsForTemplate(helm helmexec.Interface, release *ReleaseS
|
||||||
flags = st.chartVersionFlags(release)
|
flags = st.chartVersionFlags(release)
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
flags = st.appendHelmXFlags(flags, release)
|
||||||
flags, err = st.appendHelmXFlags(flags, release)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
flags = st.appendApiVersionsFlags(flags, release)
|
flags = st.appendApiVersionsFlags(flags, release)
|
||||||
|
|
||||||
flags, err = st.appendPostRenderFlags(flags, release, helm)
|
flags = st.appendPostRenderFlags(flags, release, helm)
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
common, files, err := st.namespaceAndValuesFlags(helm, release, workerIndex)
|
common, files, err := st.namespaceAndValuesFlags(helm, release, workerIndex)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -2593,16 +2580,9 @@ func (st *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSpec,
|
||||||
|
|
||||||
flags = st.appendConnectionFlags(flags, helm, release)
|
flags = st.appendConnectionFlags(flags, helm, release)
|
||||||
|
|
||||||
var err error
|
flags = st.appendHelmXFlags(flags, release)
|
||||||
flags, err = st.appendHelmXFlags(flags, release)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
flags, err = st.appendPostRenderFlags(flags, release, helm)
|
flags = st.appendPostRenderFlags(flags, release, helm)
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
common, files, err := st.namespaceAndValuesFlags(helm, release, workerIndex)
|
common, files, err := st.namespaceAndValuesFlags(helm, release, workerIndex)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -2660,12 +2640,7 @@ func (st *HelmState) flagsForLint(helm helmexec.Interface, release *ReleaseSpec,
|
||||||
return nil, files, err
|
return nil, files, err
|
||||||
}
|
}
|
||||||
|
|
||||||
flags, err = st.appendHelmXFlags(flags, release)
|
return st.appendHelmXFlags(flags, release), files, nil
|
||||||
if err != nil {
|
|
||||||
return nil, files, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return flags, files, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *HelmState) newReleaseTemplateData(release *ReleaseSpec) releaseTemplateData {
|
func (st *HelmState) newReleaseTemplateData(release *ReleaseSpec) releaseTemplateData {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ type TextRenderer interface {
|
||||||
RenderTemplateText(text string) (string, error)
|
RenderTemplateText(text string) (string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint: golint
|
|
||||||
func NewTextRenderer(fs *filesystem.FileSystem, basePath string, data interface{}) *templateTextRenderer {
|
func NewTextRenderer(fs *filesystem.FileSystem, basePath string, data interface{}) *templateTextRenderer {
|
||||||
return &templateTextRenderer{
|
return &templateTextRenderer{
|
||||||
ReadText: fs.ReadFile,
|
ReadText: fs.ReadFile,
|
||||||
|
|
|
||||||
|
|
@ -137,10 +137,9 @@ type meta struct {
|
||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint: unparam
|
func (res resource) getMeta() meta {
|
||||||
func (res resource) getMeta() (meta, error) {
|
|
||||||
if len(res) == 0 {
|
if len(res) == 0 {
|
||||||
return meta{}, nil
|
return meta{}
|
||||||
}
|
}
|
||||||
m := meta{}
|
m := meta{}
|
||||||
apiVersion, _ := res["apiVersion"].(string)
|
apiVersion, _ := res["apiVersion"].(string)
|
||||||
|
|
@ -152,7 +151,7 @@ func (res resource) getMeta() (meta, error) {
|
||||||
m.name = name
|
m.name = name
|
||||||
namespace, _ := metadata["namespace"].(string)
|
namespace, _ := metadata["namespace"].(string)
|
||||||
m.namespace = namespace
|
m.namespace = namespace
|
||||||
return m, nil
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
func readManifest(path string) ([]resource, error) {
|
func readManifest(path string) ([]resource, error) {
|
||||||
|
|
@ -183,10 +182,8 @@ func readManifest(path string) ([]resource, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (res resource) getID() string {
|
func (res resource) getID() string {
|
||||||
meta, err := res.getMeta()
|
meta := res.getMeta()
|
||||||
if err != nil {
|
|
||||||
return fmt.Sprintf("%v", res)
|
|
||||||
}
|
|
||||||
ns := meta.namespace
|
ns := meta.namespace
|
||||||
if ns == "" {
|
if ns == "" {
|
||||||
ns = "~X"
|
ns = "~X"
|
||||||
|
|
@ -229,10 +226,8 @@ func (ps *pairs) isSameResource(meta1, meta2 meta) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ps *pairs) add(node resource, source diffSource) error {
|
func (ps *pairs) add(node resource, source diffSource) error {
|
||||||
nodeMeta, err := node.getMeta()
|
nodeMeta := node.getMeta()
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for i := range ps.list {
|
for i := range ps.list {
|
||||||
p := ps.list[i]
|
p := ps.list[i]
|
||||||
if ps.isSameResource(p.meta, nodeMeta) {
|
if ps.isSameResource(p.meta, nodeMeta) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue