Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package helmfile for openSUSE:Factory checked in at 2025-02-13 18:39:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/helmfile (Old) and /work/SRC/openSUSE:Factory/.helmfile.new.8181 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "helmfile" Thu Feb 13 18:39:43 2025 rev:65 rq:1245574 version:0.171.0 Changes: -------- --- /work/SRC/openSUSE:Factory/helmfile/helmfile.changes 2025-01-23 18:06:13.702155370 +0100 +++ /work/SRC/openSUSE:Factory/.helmfile.new.8181/helmfile.changes 2025-02-13 18:40:06.634810912 +0100 @@ -1,0 +2,30 @@ +Thu Feb 13 09:00:02 UTC 2025 - Manfred Hollstein <manfre...@gmx.net> + +- Update to version 0.171.0: + * feat: execute templates against postRendererHooks by @allanger + in #1839 + * build(deps): bump github.com/spf13/pflag from 1.0.5 to 1.0.6 + by @dependabot in #1897 + * build(deps): bump github.com/goccy/go-yaml from 1.15.15 to + 1.15.16 by @dependabot in #1901 + * build(deps): bump github.com/goccy/go-yaml from 1.15.16 to + 1.15.17 by @dependabot in #1905 + * Use a regex to match --state-values-set-string arguments + by @gllb in #1902 + * build(deps): bump golang.org/x/sync from 0.10.0 to 0.11.0 + by @dependabot in #1911 + * Chartify v0.20.8 update by @scodeman in #1908 + * cleanup: remove all about v0.x by @yxxhero in #1903 + * build(deps): bump golang.org/x/term from 0.28.0 to 0.29.0 + by @dependabot in #1913 + * chore: update babel to resolve CVEs by @zhaque44 in #1916 + * remove deprecated charts.yaml by @yxxhero in #1437 + * Revert "cleanup: remove all about v0.x" by @yxxhero in #1918 + * build(deps): bump github.com/goccy/go-yaml from 1.15.17 to + 1.15.19 by @dependabot in #1920 + * build(deps): bump github.com/goccy/go-yaml from 1.15.19 to + 1.15.20 by @dependabot in #1921 + * feat: Add support for --wait-retries flag. by @connyay in #1922 + * build: update go-yaml to v1.15.21 by @yxxhero in #1923 + +------------------------------------------------------------------- Old: ---- helmfile-0.170.1.tar.gz New: ---- helmfile-0.171.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ helmfile.spec ++++++ --- /var/tmp/diff_new_pack.WyXzan/_old 2025-02-13 18:40:07.730856313 +0100 +++ /var/tmp/diff_new_pack.WyXzan/_new 2025-02-13 18:40:07.734856478 +0100 @@ -17,9 +17,9 @@ # -%define git_commit 9dc0aaa1e7263f2a89e973f4dcbe343dc93c3c1d +%define git_commit 41d8070b85e461505cc8eb3ad6ca1e75e44c3936 Name: helmfile -Version: 0.170.1 +Version: 0.171.0 Release: 0 Summary: Deploy Kubernetes Helm Charts License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.WyXzan/_old 2025-02-13 18:40:07.766857804 +0100 +++ /var/tmp/diff_new_pack.WyXzan/_new 2025-02-13 18:40:07.766857804 +0100 @@ -5,7 +5,7 @@ <param name="exclude">.git</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> - <param name="revision">v0.170.1</param> + <param name="revision">v0.171.0</param> <param name="changesgenerate">enable</param> </service> <service name="recompress" mode="manual"> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.WyXzan/_old 2025-02-13 18:40:07.794858964 +0100 +++ /var/tmp/diff_new_pack.WyXzan/_new 2025-02-13 18:40:07.794858964 +0100 @@ -1,5 +1,5 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/helmfile/helmfile.git</param> - <param name="changesrevision">9dc0aaa1e7263f2a89e973f4dcbe343dc93c3c1d</param></service></servicedata> + <param name="changesrevision">41d8070b85e461505cc8eb3ad6ca1e75e44c3936</param></service></servicedata> ++++++ helmfile-0.170.1.tar.gz -> helmfile-0.171.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/docs/index.md new/helmfile-0.171.0/docs/index.md --- old/helmfile-0.170.1/docs/index.md 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/docs/index.md 2025-02-12 07:31:19.000000000 +0100 @@ -195,6 +195,8 @@ keyring: path/to/keyring.gpg # wait for k8s resources via --wait. (default false) wait: true + # if set and --wait enabled, will retry any failed check on resource state subject to the specified number of retries (default 0) + waitRetries: 3 # if set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout (default false, Implemented in Helm3.5) waitForJobs: true # time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300) @@ -312,6 +314,7 @@ verify: true keyring: path/to/keyring.gpg wait: true + waitRetries: 3 waitForJobs: true timeout: 60 recreatePods: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/docs/requirements.txt new/helmfile-0.171.0/docs/requirements.txt --- old/helmfile-0.170.1/docs/requirements.txt 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/docs/requirements.txt 2025-02-12 07:31:19.000000000 +0100 @@ -1,4 +1,4 @@ -Babel==2.9.1 +Babel==2.17.0 click==8.1.2 ghp-import==2.0.2 gitdb==4.0.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/go.mod new/helmfile-0.171.0/go.mod --- old/helmfile-0.170.1/go.mod 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/go.mod 2025-02-12 07:31:19.000000000 +0100 @@ -8,16 +8,16 @@ github.com/Masterminds/sprig/v3 v3.3.0 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/go-test/deep v1.1.1 - github.com/goccy/go-yaml v1.15.15 + github.com/goccy/go-yaml v1.15.21 github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.6.0 github.com/gosuri/uitable v0.0.4 github.com/hashicorp/go-getter v1.7.8 github.com/hashicorp/hcl/v2 v2.23.0 - github.com/helmfile/chartify v0.20.7 + github.com/helmfile/chartify v0.20.8 github.com/helmfile/vals v0.39.0 github.com/spf13/cobra v1.8.1 - github.com/spf13/pflag v1.0.5 + github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 github.com/tatsushid/go-prettytable v0.0.0-20141013043238-ed2d14c29939 github.com/tj/assert v0.0.3 @@ -26,8 +26,8 @@ github.com/zclconf/go-cty-yaml v1.1.0 go.szostok.io/version v1.2.0 go.uber.org/zap v1.27.0 - golang.org/x/sync v0.10.0 - golang.org/x/term v0.28.0 + golang.org/x/sync v0.11.0 + golang.org/x/term v0.29.0 gopkg.in/yaml.v2 v2.4.0 helm.sh/helm/v3 v3.17.0 k8s.io/apimachinery v0.32.1 @@ -99,7 +99,7 @@ go.uber.org/atomic v1.9.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.25.0 // indirect - golang.org/x/sys v0.29.0 // indirect + golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.8.0 // indirect google.golang.org/api v0.215.0 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/go.sum new/helmfile-0.171.0/go.sum --- old/helmfile-0.170.1/go.sum 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/go.sum 2025-02-12 07:31:19.000000000 +0100 @@ -1010,8 +1010,10 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-yaml v1.15.15 h1:5turdzAlutS2Q7/QR/9R99Z1K0J00qDb4T0pHJcZ5ew= -github.com/goccy/go-yaml v1.15.15/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.15.20 h1:eQHFLrr1lpLYAxupPD9ThZbGtncPl9nyu3nkAayEZgY= +github.com/goccy/go-yaml v1.15.20/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.15.21 h1:MihyxsYo59zPPZUE0Z5XPQPXW7kVLGGlcq9rMKAu7bs= +github.com/goccy/go-yaml v1.15.21/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -1214,8 +1216,8 @@ github.com/hashicorp/jsonapi v1.3.1/go.mod h1:kWfdn49yCjQvbpnvY1dxxAuAFzISwrrMDQOcu6NsFoM= github.com/hashicorp/vault/api v1.15.0 h1:O24FYQCWwhwKnF7CuSqP30S51rTV7vz1iACXE/pj5DA= github.com/hashicorp/vault/api v1.15.0/go.mod h1:+5YTO09JGn0u+b6ySD/LLVf8WkJCPLAL2Vkmrn2+CM8= -github.com/helmfile/chartify v0.20.7 h1:aOUvSFHrT/0LOUDz1Mcg2TDBtpvXBrZSYnBZvwmqruo= -github.com/helmfile/chartify v0.20.7/go.mod h1:mWN+sWWf+lnA225jZIqqgpwbGjiT3NAQHGCm5vdC0zw= +github.com/helmfile/chartify v0.20.8 h1:vRzQ6Mb8OEncoA3K5RYtup5JVzy5waUSK24MBXK3CTY= +github.com/helmfile/chartify v0.20.8/go.mod h1:mWN+sWWf+lnA225jZIqqgpwbGjiT3NAQHGCm5vdC0zw= github.com/helmfile/vals v0.39.0 h1:8V1NN4ac7SHFCjq3tlTO8zHKFQ26DY9qVGRKPhYDHoE= github.com/helmfile/vals v0.39.0/go.mod h1:GoA8SSsiX661IFaG4E5O+FSPl+hW2MLyWR9zxzAjR+A= github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog= @@ -1451,8 +1453,9 @@ github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -1770,8 +1773,9 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1860,8 +1864,9 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= @@ -1876,8 +1881,9 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/app/app.go new/helmfile-0.171.0/pkg/app/app.go --- old/helmfile-0.170.1/pkg/app/app.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/app/app.go 2025-02-12 07:31:19.000000000 +0100 @@ -385,6 +385,7 @@ SkipRefresh: c.SkipRefresh(), SkipDeps: c.SkipDeps(), Wait: c.Wait(), + WaitRetries: c.WaitRetries(), WaitForJobs: c.WaitForJobs(), IncludeCRDs: &includeCRDs, IncludeTransitiveNeeds: c.IncludeNeeds(), @@ -419,6 +420,7 @@ SkipRefresh: c.SkipRefresh(), SkipDeps: c.SkipDeps(), Wait: c.Wait(), + WaitRetries: c.WaitRetries(), WaitForJobs: c.WaitForJobs(), IncludeCRDs: &includeCRDs, SkipCleanup: c.RetainValuesFiles() || c.SkipCleanup(), @@ -1546,6 +1548,7 @@ SkipCleanup: c.RetainValuesFiles() || c.SkipCleanup(), SkipCRDs: c.SkipCRDs(), Wait: c.Wait(), + WaitRetries: c.WaitRetries(), WaitForJobs: c.WaitForJobs(), ReuseValues: c.ReuseValues(), ResetValues: c.ResetValues(), @@ -1943,6 +1946,7 @@ Set: c.Set(), SkipCRDs: c.SkipCRDs(), Wait: c.Wait(), + WaitRetries: c.WaitRetries(), WaitForJobs: c.WaitForJobs(), ReuseValues: c.ReuseValues(), ResetValues: c.ResetValues(), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/app/app_test.go new/helmfile-0.171.0/pkg/app/app_test.go --- old/helmfile-0.170.1/pkg/app/app_test.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/app/app_test.go 2025-02-12 07:31:19.000000000 +0100 @@ -2244,6 +2244,7 @@ diffArgs string logger *zap.SugaredLogger wait bool + waitRetries int waitForJobs bool reuseValues bool postRenderer string @@ -2272,6 +2273,10 @@ return a.wait } +func (a applyConfig) WaitRetries() int { + return a.waitRetries +} + func (a applyConfig) WaitForJobs() bool { return a.waitForJobs } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/app/config.go new/helmfile-0.171.0/pkg/app/config.go --- old/helmfile-0.170.1/pkg/app/config.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/app/config.go 2025-02-12 07:31:19.000000000 +0100 @@ -63,6 +63,7 @@ SkipDeps() bool SkipRefresh() bool Wait() bool + WaitRetries() int WaitForJobs() bool IncludeTests() bool @@ -113,6 +114,7 @@ SkipDeps() bool SkipRefresh() bool Wait() bool + WaitRetries() int WaitForJobs() bool SyncArgs() string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/app/desired_state_file_loader.go new/helmfile-0.171.0/pkg/app/desired_state_file_loader.go --- old/helmfile-0.170.1/pkg/app/desired_state_file_loader.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/app/desired_state_file_loader.go 2025-02-12 07:31:19.000000000 +0100 @@ -249,6 +249,14 @@ finalState.RenderedValues = currentState.RenderedValues } + if len(finalState.HelmDefaults.PostRendererArgs) > 0 { + for i := range finalState.Releases { + if len(finalState.Releases[i].PostRendererArgs) == 0 { + finalState.Releases[i].PostRendererArgs = finalState.HelmDefaults.PostRendererArgs + } + } + finalState.HelmDefaults.PostRendererArgs = nil + } env = &finalState.Env ld.logger.Debugf("merged environment: %v", env) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/config/apply.go new/helmfile-0.171.0/pkg/config/apply.go --- old/helmfile-0.170.1/pkg/config/apply.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/config/apply.go 2025-02-12 07:31:19.000000000 +0100 @@ -50,6 +50,8 @@ SuppressDiff bool // Wait is true if the helm command should wait for the release to be deployed Wait bool + // WaitRetries is the number of times to retry waiting for the release to be deployed + WaitRetries int // WaitForJobs is true if the helm command should wait for the jobs to be completed WaitForJobs bool // Propagate '--skipSchemaValidation' to helmv3 template and helm install @@ -213,6 +215,11 @@ return a.ApplyOptions.Wait } +// WaitRetries returns the wait retries. +func (a *ApplyImpl) WaitRetries() int { + return a.ApplyOptions.WaitRetries +} + // WaitForJobs returns the wait for jobs. func (a *ApplyImpl) WaitForJobs() bool { return a.ApplyOptions.WaitForJobs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/config/config.go new/helmfile-0.171.0/pkg/config/config.go --- old/helmfile-0.170.1/pkg/config/config.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/config/config.go 2025-02-12 07:31:19.000000000 +0100 @@ -1,21 +1,23 @@ package config import ( + "regexp" "strings" "github.com/helmfile/helmfile/pkg/maputil" ) func NewCLIConfigImpl(g *GlobalImpl) error { + re := regexp.MustCompile(`(?:,|^)([^\s=]+)=(['"][^'"]*['"]|[^,]+)`) optsSet := g.RawStateValuesSetString() if len(optsSet) > 0 { set := map[string]any{} for i := range optsSet { - ops := strings.Split(optsSet[i], ",") + ops := re.FindAllStringSubmatch(optsSet[i], -1) for j := range ops { - op := strings.SplitN(ops[j], "=", 2) - k := maputil.ParseKey(op[0]) - v := op[1] + op := ops[j] + k := maputil.ParseKey(op[1]) + v := op[2] maputil.Set(set, k, v, true) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/config/sync.go new/helmfile-0.171.0/pkg/config/sync.go --- old/helmfile-0.170.1/pkg/config/sync.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/config/sync.go 2025-02-12 07:31:19.000000000 +0100 @@ -20,6 +20,8 @@ SkipCRDs bool // Wait is the wait flag Wait bool + // WaitRetries is the wait retries flag + WaitRetries int // WaitForJobs is the wait for jobs flag WaitForJobs bool // ReuseValues is true if the helm command should reuse the values @@ -110,6 +112,11 @@ return t.SyncOptions.Wait } +// WaitRetries returns the wait retries +func (t *SyncImpl) WaitRetries() int { + return t.SyncOptions.WaitRetries +} + // WaitForJobs returns the wait for jobs func (t *SyncImpl) WaitForJobs() bool { return t.SyncOptions.WaitForJobs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/state/helmx.go new/helmfile-0.171.0/pkg/state/helmx.go --- old/helmfile-0.170.1/pkg/state/helmx.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/state/helmx.go 2025-02-12 07:31:19.000000000 +0100 @@ -4,6 +4,7 @@ "fmt" "os" "path/filepath" + "strconv" "github.com/helmfile/chartify" @@ -105,15 +106,31 @@ return flags } -func (st *HelmState) appendWaitFlags(flags []string, release *ReleaseSpec, ops *SyncOpts) []string { +func (st *HelmState) appendWaitFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, ops *SyncOpts) []string { + var hasWait bool switch { case release.Wait != nil && *release.Wait: + hasWait = true flags = append(flags, "--wait") case ops != nil && ops.Wait: + hasWait = true flags = append(flags, "--wait") case release.Wait == nil && st.HelmDefaults.Wait: + hasWait = true flags = append(flags, "--wait") } + // see https://github.com/helm/helm/releases/tag/v3.15.0 + // https://github.com/helm/helm/commit/fc74964 + if hasWait && helm.IsVersionAtLeast("3.15.0") { + switch { + case release.WaitRetries != nil && *release.WaitRetries > 0: + flags = append(flags, "--wait-retries", strconv.Itoa(*release.WaitRetries)) + case ops != nil && ops.WaitRetries > 0: + flags = append(flags, "--wait-retries", strconv.Itoa(ops.WaitRetries)) + case release.WaitRetries == nil && st.HelmDefaults.WaitRetries > 0: + flags = append(flags, "--wait-retries", strconv.Itoa(st.HelmDefaults.WaitRetries)) + } + } return flags } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/state/helmx_test.go new/helmfile-0.171.0/pkg/state/helmx_test.go --- old/helmfile-0.170.1/pkg/state/helmx_test.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/state/helmx_test.go 2025-02-12 07:31:19.000000000 +0100 @@ -76,13 +76,16 @@ name string release *ReleaseSpec syncOpts *SyncOpts + helm helmexec.Interface helmSpec HelmSpec expected []string }{ + // --wait { name: "release wait", release: &ReleaseSpec{Wait: &[]bool{true}[0]}, syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.11.0"), helmSpec: HelmSpec{}, expected: []string{"--wait"}, }, @@ -90,6 +93,7 @@ name: "cli flags wait", release: &ReleaseSpec{}, syncOpts: &SyncOpts{Wait: true}, + helm: testutil.NewVersionHelmExec("3.11.0"), helmSpec: HelmSpec{}, expected: []string{"--wait"}, }, @@ -97,6 +101,7 @@ name: "helm defaults wait", release: &ReleaseSpec{}, syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.11.0"), helmSpec: HelmSpec{Wait: true}, expected: []string{"--wait"}, }, @@ -104,6 +109,7 @@ name: "release wait false", release: &ReleaseSpec{Wait: &[]bool{false}[0]}, syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.11.0"), helmSpec: HelmSpec{Wait: true}, expected: []string{}, }, @@ -111,6 +117,7 @@ name: "cli flags wait false", release: &ReleaseSpec{}, syncOpts: &SyncOpts{}, + helm: testutil.NewVersionHelmExec("3.11.0"), helmSpec: HelmSpec{Wait: true}, expected: []string{"--wait"}, }, @@ -118,16 +125,74 @@ name: "helm defaults wait false", release: &ReleaseSpec{}, syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.11.0"), helmSpec: HelmSpec{Wait: false}, expected: []string{}, }, + // --wait-retries + { + name: "release wait and retry unsupported", + release: &ReleaseSpec{Wait: &[]bool{true}[0], WaitRetries: &[]int{1}[0]}, + syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.11.0"), + helmSpec: HelmSpec{}, + expected: []string{"--wait"}, + }, + { + name: "release wait and retry supported", + release: &ReleaseSpec{Wait: &[]bool{true}[0], WaitRetries: &[]int{1}[0]}, + syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.15.0"), + helmSpec: HelmSpec{}, + expected: []string{"--wait", "--wait-retries", "1"}, + }, + { + name: "no wait retry", + release: &ReleaseSpec{WaitRetries: &[]int{1}[0]}, + syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.15.0"), + helmSpec: HelmSpec{}, + expected: []string{}, + }, + { + name: "cli flags wait and retry", + release: &ReleaseSpec{}, + syncOpts: &SyncOpts{Wait: true, WaitRetries: 2}, + helm: testutil.NewVersionHelmExec("3.15.0"), + helmSpec: HelmSpec{}, + expected: []string{"--wait", "--wait-retries", "2"}, + }, + { + name: "helm defaults wait retry", + release: &ReleaseSpec{}, + syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.15.0"), + helmSpec: HelmSpec{Wait: true, WaitRetries: 3}, + expected: []string{"--wait", "--wait-retries", "3"}, + }, + { + name: "release wait default retries", + release: &ReleaseSpec{Wait: &[]bool{true}[0]}, + syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.15.0"), + helmSpec: HelmSpec{WaitRetries: 4}, + expected: []string{"--wait", "--wait-retries", "4"}, + }, + { + name: "release retries default wait", + release: &ReleaseSpec{WaitRetries: &[]int{5}[0]}, + syncOpts: nil, + helm: testutil.NewVersionHelmExec("3.15.0"), + helmSpec: HelmSpec{Wait: true}, + expected: []string{"--wait", "--wait-retries", "5"}, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { st := &HelmState{} st.HelmDefaults = tt.helmSpec - got := st.appendWaitFlags([]string{}, tt.release, tt.syncOpts) + got := st.appendWaitFlags([]string{}, tt.helm, tt.release, tt.syncOpts) require.Equalf(t, tt.expected, got, "appendWaitFlags() = %v, want %v", got, tt.expected) }) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/state/release.go new/helmfile-0.171.0/pkg/state/release.go --- old/helmfile-0.170.1/pkg/state/release.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/state/release.go 2025-02-12 07:31:19.000000000 +0100 @@ -90,6 +90,18 @@ result.Labels[key] = s.String() } + { + postRendererArgs := []string{} + for _, ts := range result.PostRendererArgs { + postRendererArg, err := renderer.RenderTemplateContentToString([]byte(ts)) + if err != nil { + return nil, fmt.Errorf("failed executing template expressions in release \"%s\".postRendererArgs = \"%s\": %v", r.Name, ts, err) + } + postRendererArgs = append(postRendererArgs, postRendererArg) + } + result.PostRendererArgs = postRendererArgs + } + if len(result.ValuesTemplate) > 0 { for i, t := range result.ValuesTemplate { switch ts := t.(type) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/state/state.go new/helmfile-0.171.0/pkg/state/state.go --- old/helmfile-0.170.1/pkg/state/state.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/state/state.go 2025-02-12 07:31:19.000000000 +0100 @@ -167,6 +167,8 @@ Devel bool `yaml:"devel"` // Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful Wait bool `yaml:"wait"` + // WaitRetries, if set and --wait enabled, will retry any failed check on resource state, except if HTTP status code < 500 is received, subject to the specified number of retries + WaitRetries int `yaml:"waitRetries"` // WaitForJobs, if set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout WaitForJobs bool `yaml:"waitForJobs"` // Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300) @@ -262,6 +264,8 @@ Devel *bool `yaml:"devel,omitempty"` // Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful Wait *bool `yaml:"wait,omitempty"` + // WaitRetries, if set and --wait enabled, will retry any failed check on resource state, except if HTTP status code < 500 is received, subject to the specified number of retries + WaitRetries *int `yaml:"waitRetries,omitempty"` // WaitForJobs, if set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout WaitForJobs *bool `yaml:"waitForJobs,omitempty"` // Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300) @@ -781,6 +785,7 @@ SkipCleanup bool SkipCRDs bool Wait bool + WaitRetries int WaitForJobs bool ReuseValues bool ResetValues bool @@ -1122,6 +1127,7 @@ Validate bool IncludeCRDs *bool Wait bool + WaitRetries int WaitForJobs bool OutputDir string OutputDirTemplate string @@ -2730,7 +2736,7 @@ flags = append(flags, "--enable-dns") } - flags = st.appendWaitFlags(flags, release, opt) + flags = st.appendWaitFlags(flags, helm, release, opt) flags = st.appendWaitForJobsFlags(flags, release, opt) // non-OCI chart should be verified here diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/state/state_exec_tmpl_test.go new/helmfile-0.171.0/pkg/state/state_exec_tmpl_test.go --- old/helmfile-0.170.1/pkg/state/state_exec_tmpl_test.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/state/state_exec_tmpl_test.go 2025-02-12 07:31:19.000000000 +0100 @@ -123,6 +123,29 @@ Values: []any{map[string]any{"key": "app-val0"}}, }, }, + { + name: "Has template expressions in post renderer args", + input: ReleaseSpec{ + Chart: "test-chart", + PostRendererArgs: []string{ + "--release", + "{{ .Release.Name }}", + "--chart", + "{{ .Release.Chart }}", + }, + Name: "test-release", + }, + want: ReleaseSpec{ + Chart: "test-chart", + Name: "test-release", + PostRendererArgs: []string{ + "--release", + "test-chart-dev", + "--chart", + "test-chart", + }, + }, + }, } for i := range tests { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/pkg/state/temp_test.go new/helmfile-0.171.0/pkg/state/temp_test.go --- old/helmfile-0.170.1/pkg/state/temp_test.go 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/pkg/state/temp_test.go 2025-02-12 07:31:19.000000000 +0100 @@ -38,39 +38,39 @@ run(testcase{ subject: "baseline", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, - want: "foo-values-5b58697694", + want: "foo-values-669d45cd7b", }) run(testcase{ subject: "different bytes content", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, data: []byte(`{"k":"v"}`), - want: "foo-values-58bff47d77", + want: "foo-values-67d8c67fcf", }) run(testcase{ subject: "different map content", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, data: map[string]any{"k": "v"}, - want: "foo-values-5fb8948f75", + want: "foo-values-b9bc64677", }) run(testcase{ subject: "different chart", release: ReleaseSpec{Name: "foo", Chart: "stable/envoy"}, - want: "foo-values-784b76684f", + want: "foo-values-585c4565f5", }) run(testcase{ subject: "different name", release: ReleaseSpec{Name: "bar", Chart: "incubator/raw"}, - want: "bar-values-f48df5f49", + want: "bar-values-c94846459", }) run(testcase{ subject: "specific ns", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw", Namespace: "myns"}, - want: "myns-foo-values-6b68696b8c", + want: "myns-foo-values-798d69477", }) for id, n := range ids { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/test/integration/run.sh new/helmfile-0.171.0/test/integration/run.sh --- old/helmfile-0.170.1/test/integration/run.sh 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/test/integration/run.sh 2025-02-12 07:31:19.000000000 +0100 @@ -28,6 +28,7 @@ export HELM_PLUGINS="${HELM_DATA_HOME}/plugins" export HELM_CONFIG_HOME="${helm_dir}/config" HELM_DIFF_VERSION="${HELM_DIFF_VERSION:-3.9.14}" +HELM_GIT_VERSION="${HELM_GIT_VERSION:-1.3.0}" HELM_SECRETS_VERSION="${HELM_SECRETS_VERSION:-3.15.0}" export GNUPGHOME="${PWD}/${dir}/.gnupg" export SOPS_PGP_FP="B2D6D7BBEC03B2E66571C8C00AD18E16CFDEF700" @@ -70,7 +71,8 @@ trap cleanup EXIT info "Using namespace: ${test_ns}" info "Using Helm version:" $(${helm} version --short | grep -o 'v[0-9.]\+') -${helm} plugin ls | grep diff || ${helm} plugin install https://github.com/databus23/helm-diff --version v${HELM_DIFF_VERSION} +${helm} plugin ls | grep "^diff" || ${helm} plugin install https://github.com/databus23/helm-diff --version v${HELM_DIFF_VERSION} +${helm} plugin ls | grep "^helm-git" || ${helm} plugin install https://github.com/aslafy-z/helm-git --version v${HELM_GIT_VERSION} info "Using Kustomize version: $(kustomize version --short | grep -o 'v[0-9.]\+')" ${kubectl} get namespace ${test_ns} &> /dev/null && warn "Namespace ${test_ns} exists, from a previous test run?" ${kubectl} create namespace ${test_ns} || fail "Could not create namespace ${test_ns}" @@ -98,6 +100,7 @@ . ${dir}/test-cases/deps-kustomization-i-1402.sh . ${dir}/test-cases/hcl-secrets.sh . ${dir}/test-cases/issue-1749.sh +. ${dir}/test-cases/issue-1893.sh # ALL DONE ----------------------------------------------------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/test/integration/test-cases/cli-overwrite-environment-values/input/values.yaml.gotmpl new/helmfile-0.171.0/test/integration/test-cases/cli-overwrite-environment-values/input/values.yaml.gotmpl --- old/helmfile-0.170.1/test/integration/test-cases/cli-overwrite-environment-values/input/values.yaml.gotmpl 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/test/integration/test-cases/cli-overwrite-environment-values/input/values.yaml.gotmpl 2025-02-12 07:31:19.000000000 +0100 @@ -1,2 +1,5 @@ image: - tag: {{ .Values.ns }} \ No newline at end of file + tag: {{ .Values.imageTag }} + +podAnnotations: + zone: {{ .Values.zone }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml new/helmfile-0.171.0/test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml --- old/helmfile-0.170.1/test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml 2025-02-12 07:31:19.000000000 +0100 @@ -51,6 +51,7 @@ app.kubernetes.io/instance: test app.kubernetes.io/managed-by: Helm annotations: + zone: "zone1,zone2" spec: automountServiceAccountToken: false @@ -75,7 +76,7 @@ initContainers: containers: - name: nginx - image: docker.io/bitnami/nginx:test3 + image: docker.io/bitnami/nginx:1.23.3 imagePullPolicy: "IfNotPresent" env: - name: BITNAMI_DEBUG diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/test/integration/test-cases/cli-overwrite-environment-values.sh new/helmfile-0.171.0/test/integration/test-cases/cli-overwrite-environment-values.sh --- old/helmfile-0.170.1/test/integration/test-cases/cli-overwrite-environment-values.sh 2025-01-23 01:31:00.000000000 +0100 +++ new/helmfile-0.171.0/test/integration/test-cases/cli-overwrite-environment-values.sh 2025-02-12 07:31:19.000000000 +0100 @@ -11,7 +11,7 @@ info "Comparing ${case_title} for v1 output ${cli_overwrite_environment_values_reverse} with ${cli_overwrite_environment_values_output_dir}/overwritten.yaml" for i in $(seq 10); do info "Comparing build/cli-overwrite-environment-values #$i" - ${helmfile} -f ${cli_overwrite_environment_values_input_dir}/input_v1.yaml.gotmpl template --state-values-set ns=test3 > ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" shouldn't fail" + ${helmfile} -f ${cli_overwrite_environment_values_input_dir}/input_v1.yaml.gotmpl template --state-values-set ns=test3 --state-values-set-string imageTag=1.23.3,zone="zone1,zone2" > ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" shouldn't fail" diff -u ${cli_overwrite_environment_values_output_dir}/output_v1.yaml ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" should be consistent" echo code=$? done @@ -21,9 +21,9 @@ info "Comparing ${case_title} output ${cli_overwrite_environment_values_reverse} with ${cli_overwrite_environment_values_output_dir}/overwritten.yaml" for i in $(seq 10); do info "Comparing build/cli-overwrite-environment-values #$i" - ${helmfile} -f ${cli_overwrite_environment_values_input_dir}/input_v1.yaml.gotmpl template --state-values-set ns=test3 > ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" shouldn't fail" + ${helmfile} -f ${cli_overwrite_environment_values_input_dir}/input_v1.yaml.gotmpl template --state-values-set ns=test3 --state-values-set-string imageTag=1.23.3,zone="zone1,zone2" > ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" shouldn't fail" diff -u ${cli_overwrite_environment_values_output_dir}/output_v1.yaml ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" should be consistent" echo code=$? done test_pass "${case_title}" -fi \ No newline at end of file +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/test/integration/test-cases/issue-1893/input/helmfile.yaml new/helmfile-0.171.0/test/integration/test-cases/issue-1893/input/helmfile.yaml --- old/helmfile-0.170.1/test/integration/test-cases/issue-1893/input/helmfile.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/helmfile-0.171.0/test/integration/test-cases/issue-1893/input/helmfile.yaml 2025-02-12 07:31:19.000000000 +0100 @@ -0,0 +1,20 @@ +--- +repositories: +- name: chartify-testdata + url: git+https://github.com/helmfile/chartify@testdata/charts/importvalues?ref=master + +releases: +- name: importvalues + chart: chartify-testdata/importvalues + version: 0.1.0 + transformers: + - apiVersion: builtin + kind: ValueAddTransformer + metadata: + name: add-annotation-issue + targets: + - fieldPath: metadata/annotations/issue + selector: + kind: ConfigMap + name: importvalues-imported-values + value: "1893" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/helmfile-0.170.1/test/integration/test-cases/issue-1893.sh new/helmfile-0.171.0/test/integration/test-cases/issue-1893.sh --- old/helmfile-0.170.1/test/integration/test-cases/issue-1893.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/helmfile-0.171.0/test/integration/test-cases/issue-1893.sh 2025-02-12 07:31:19.000000000 +0100 @@ -0,0 +1,8 @@ +issue_1893_input_dir="${cases_dir}/issue-1893/input" +helmfile_real="$(pwd)/${helmfile}" + +test_start "issue 1893 helmfile template" +cd "${issue_1893_input_dir}" +${helmfile_real} template || fail "\"issue 1893 helmfile template shouldn't fail" +cd - +test_pass "issue 1893 helmfile template" \ No newline at end of file ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/helmfile/vendor.tar.gz /work/SRC/openSUSE:Factory/.helmfile.new.8181/vendor.tar.gz differ: char 5, line 1