From f475f3e1fd8c4eb04dd07b78c68967bba39cedb8 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Sat, 22 Feb 2025 13:05:21 +0200 Subject: [PATCH 1/4] feat: error out when post-renderer produces no output When the templating post-renderer produces no output, something went wrong so we error out. Signed-off-by: Yarden Shoham --- pkg/postrender/exec.go | 6 ++++++ pkg/postrender/exec_test.go | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/pkg/postrender/exec.go b/pkg/postrender/exec.go index 167e737d6..30f3983cf 100644 --- a/pkg/postrender/exec.go +++ b/pkg/postrender/exec.go @@ -64,6 +64,12 @@ func (p *execRender) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, error) return nil, errors.Wrapf(err, "error while running command %s. error output:\n%s", p.binaryPath, stderr.String()) } + // If the binary returned almost nothing, it's likely that it didn't + // successfully render anything + if len(bytes.TrimSpace(postRendered.Bytes())) == 0 { + return nil, errors.Errorf("post render binary %s did not produce any output %s", p.binaryPath, postRendered.String()) + } + return postRendered, nil } diff --git a/pkg/postrender/exec_test.go b/pkg/postrender/exec_test.go index 19a6ec6c4..2b091cc12 100644 --- a/pkg/postrender/exec_test.go +++ b/pkg/postrender/exec_test.go @@ -121,6 +121,21 @@ func TestExecRun(t *testing.T) { is.Contains(output.String(), "BARTEST") } +func TestExecRunWithNoOutput(t *testing.T) { + if runtime.GOOS == "windows" { + // the actual Run test uses a basic sed example, so skip this test on windows + t.Skip("skipping on windows") + } + is := assert.New(t) + testpath := setupTestingScript(t) + + renderer, err := NewExec(testpath) + require.NoError(t, err) + + _, err = renderer.Run(bytes.NewBufferString("")) + is.Error(err) +} + func TestNewExecWithOneArgsRun(t *testing.T) { if runtime.GOOS == "windows" { // the actual Run test uses a basic sed example, so skip this test on windows From ab926212d9f14db74f3ead30d00a0a6fa4587f8c Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Mon, 24 Feb 2025 07:26:12 +0200 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: George Jenkins Signed-off-by: Yarden Shoham --- pkg/postrender/exec.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/postrender/exec.go b/pkg/postrender/exec.go index 30f3983cf..84357c656 100644 --- a/pkg/postrender/exec.go +++ b/pkg/postrender/exec.go @@ -67,7 +67,7 @@ func (p *execRender) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, error) // If the binary returned almost nothing, it's likely that it didn't // successfully render anything if len(bytes.TrimSpace(postRendered.Bytes())) == 0 { - return nil, errors.Errorf("post render binary %s did not produce any output %s", p.binaryPath, postRendered.String()) + return nil, errors.Errorf("post-renderer %q produced empty output", p.binaryPath) } return postRendered, nil From 18ca7c100250d70b2b5f45964eef22013b1bd384 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Mon, 24 Feb 2025 14:58:51 -0500 Subject: [PATCH 3/4] Move pkg/releaseutil to pkg/release/util The releaseutil package was originally designed to work against a generated codebase from a protobuf in Helm v2. This is when Helm used gRPC to communicate to a server side component named Tiller. When Helm moved everything client side, this package remained and it supported the release package. This change moves releaseutil to be a sub-packge of release. This is part of the change to support apiVersion v3 charts which is documented in HIP 20 Signed-off-by: Matt Farina --- cmd/helm/history.go | 2 +- cmd/helm/template.go | 2 +- pkg/action/action.go | 2 +- pkg/action/install.go | 2 +- pkg/action/list.go | 2 +- pkg/action/resource_policy.go | 2 +- pkg/action/uninstall.go | 2 +- pkg/action/upgrade.go | 2 +- pkg/{releaseutil => release/util}/filter.go | 2 +- pkg/{releaseutil => release/util}/filter_test.go | 2 +- pkg/{releaseutil => release/util}/kind_sorter.go | 2 +- pkg/{releaseutil => release/util}/kind_sorter_test.go | 2 +- pkg/{releaseutil => release/util}/manifest.go | 2 +- pkg/{releaseutil => release/util}/manifest_sorter.go | 2 +- pkg/{releaseutil => release/util}/manifest_sorter_test.go | 2 +- pkg/{releaseutil => release/util}/manifest_test.go | 2 +- pkg/{releaseutil => release/util}/sorter.go | 2 +- pkg/{releaseutil => release/util}/sorter_test.go | 2 +- pkg/storage/storage.go | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) rename pkg/{releaseutil => release/util}/filter.go (96%) rename pkg/{releaseutil => release/util}/filter_test.go (96%) rename pkg/{releaseutil => release/util}/kind_sorter.go (99%) rename pkg/{releaseutil => release/util}/kind_sorter_test.go (99%) rename pkg/{releaseutil => release/util}/manifest.go (99%) rename pkg/{releaseutil => release/util}/manifest_sorter.go (99%) rename pkg/{releaseutil => release/util}/manifest_sorter_test.go (99%) rename pkg/{releaseutil => release/util}/manifest_test.go (95%) rename pkg/{releaseutil => release/util}/sorter.go (97%) rename pkg/{releaseutil => release/util}/sorter_test.go (97%) diff --git a/cmd/helm/history.go b/cmd/helm/history.go index 91d005e7a..2c929c161 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -30,7 +30,7 @@ import ( "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index 1a6265eba..212664dc8 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -36,7 +36,7 @@ import ( "helm.sh/helm/v4/pkg/action" chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli/values" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" ) const templateDesc = ` diff --git a/pkg/action/action.go b/pkg/action/action.go index 6efc6c2ee..eeaebc15f 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -40,7 +40,7 @@ import ( "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" "helm.sh/helm/v4/pkg/time" diff --git a/pkg/action/install.go b/pkg/action/install.go index 6ad77a509..68c1848f6 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -49,7 +49,7 @@ import ( "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/repo" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" diff --git a/pkg/action/list.go b/pkg/action/list.go index f90c31acd..5c2b1e8a1 100644 --- a/pkg/action/list.go +++ b/pkg/action/list.go @@ -23,7 +23,7 @@ import ( "k8s.io/apimachinery/pkg/labels" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" ) // ListStates represents zero or more status codes that a list item may have set diff --git a/pkg/action/resource_policy.go b/pkg/action/resource_policy.go index f18acb880..b72e94124 100644 --- a/pkg/action/resource_policy.go +++ b/pkg/action/resource_policy.go @@ -20,7 +20,7 @@ import ( "strings" "helm.sh/helm/v4/pkg/kube" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" ) func filterManifestsToKeep(manifests []releaseutil.Manifest) (keep, remaining []releaseutil.Manifest) { diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index b786c37f7..6e71197f6 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -27,7 +27,7 @@ import ( chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index c5397c984..fa799ad2b 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -34,7 +34,7 @@ import ( "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/storage/driver" ) diff --git a/pkg/releaseutil/filter.go b/pkg/release/util/filter.go similarity index 96% rename from pkg/releaseutil/filter.go rename to pkg/release/util/filter.go index d600d43e8..e56752f86 100644 --- a/pkg/releaseutil/filter.go +++ b/pkg/release/util/filter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import rspb "helm.sh/helm/v4/pkg/release" diff --git a/pkg/releaseutil/filter_test.go b/pkg/release/util/filter_test.go similarity index 96% rename from pkg/releaseutil/filter_test.go rename to pkg/release/util/filter_test.go index 9fc5ce9b1..2037ef157 100644 --- a/pkg/releaseutil/filter_test.go +++ b/pkg/release/util/filter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "testing" diff --git a/pkg/releaseutil/kind_sorter.go b/pkg/release/util/kind_sorter.go similarity index 99% rename from pkg/releaseutil/kind_sorter.go rename to pkg/release/util/kind_sorter.go index ec51d50d8..130b2c831 100644 --- a/pkg/releaseutil/kind_sorter.go +++ b/pkg/release/util/kind_sorter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "sort" diff --git a/pkg/releaseutil/kind_sorter_test.go b/pkg/release/util/kind_sorter_test.go similarity index 99% rename from pkg/releaseutil/kind_sorter_test.go rename to pkg/release/util/kind_sorter_test.go index f7745d64d..cd40fe459 100644 --- a/pkg/releaseutil/kind_sorter_test.go +++ b/pkg/release/util/kind_sorter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "bytes" diff --git a/pkg/releaseutil/manifest.go b/pkg/release/util/manifest.go similarity index 99% rename from pkg/releaseutil/manifest.go rename to pkg/release/util/manifest.go index 0b04a4599..9a87949f8 100644 --- a/pkg/releaseutil/manifest.go +++ b/pkg/release/util/manifest.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "fmt" diff --git a/pkg/releaseutil/manifest_sorter.go b/pkg/release/util/manifest_sorter.go similarity index 99% rename from pkg/releaseutil/manifest_sorter.go rename to pkg/release/util/manifest_sorter.go index 2d9a14bf1..a598743a6 100644 --- a/pkg/releaseutil/manifest_sorter.go +++ b/pkg/release/util/manifest_sorter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "log" diff --git a/pkg/releaseutil/manifest_sorter_test.go b/pkg/release/util/manifest_sorter_test.go similarity index 99% rename from pkg/releaseutil/manifest_sorter_test.go rename to pkg/release/util/manifest_sorter_test.go index 3bd196c12..281f24924 100644 --- a/pkg/releaseutil/manifest_sorter_test.go +++ b/pkg/release/util/manifest_sorter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "reflect" diff --git a/pkg/releaseutil/manifest_test.go b/pkg/release/util/manifest_test.go similarity index 95% rename from pkg/releaseutil/manifest_test.go rename to pkg/release/util/manifest_test.go index 8e05b76dc..cfc19563d 100644 --- a/pkg/releaseutil/manifest_test.go +++ b/pkg/release/util/manifest_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "reflect" diff --git a/pkg/releaseutil/sorter.go b/pkg/release/util/sorter.go similarity index 97% rename from pkg/releaseutil/sorter.go rename to pkg/release/util/sorter.go index a2135d68f..8b1c89aa3 100644 --- a/pkg/releaseutil/sorter.go +++ b/pkg/release/util/sorter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "sort" diff --git a/pkg/releaseutil/sorter_test.go b/pkg/release/util/sorter_test.go similarity index 97% rename from pkg/releaseutil/sorter_test.go rename to pkg/release/util/sorter_test.go index bef261ee8..6e92eef5c 100644 --- a/pkg/releaseutil/sorter_test.go +++ b/pkg/release/util/sorter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "testing" diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index af339b85e..6a77cbae6 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" rspb "helm.sh/helm/v4/pkg/release" - relutil "helm.sh/helm/v4/pkg/releaseutil" + relutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/storage/driver" ) From 17adaa437a1a5b1240bce8822694ac34ebd13786 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:21:24 +0000 Subject: [PATCH 4/4] build(deps): bump golang.org/x/crypto from 0.33.0 to 0.35.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.33.0 to 0.35.0. - [Commits](https://github.com/golang/crypto/compare/v0.33.0...v0.35.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index c84140350..0b2836b06 100644 --- a/go.mod +++ b/go.mod @@ -33,9 +33,10 @@ require ( github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/crypto v0.33.0 + golang.org/x/crypto v0.35.0 golang.org/x/term v0.29.0 golang.org/x/text v0.22.0 + gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.32.2 k8s.io/apiextensions-apiserver v0.32.2 k8s.io/apimachinery v0.32.2 @@ -173,7 +174,6 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.12.0 // 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/component-base v0.32.2 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect diff --git a/go.sum b/go.sum index 995e14598..467cef72f 100644 --- a/go.sum +++ b/go.sum @@ -400,8 +400,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=