@ -115,8 +115,9 @@ Helm maintains a strong commitment to backward compatibility. All of our changes
formats are backward compatible from one major release to the next. No features, flags, or commands
formats are backward compatible from one major release to the next. No features, flags, or commands
are removed or substantially modified (unless we need to fix a security issue).
are removed or substantially modified (unless we need to fix a security issue).
We also try very hard to not change publicly accessible Go library definitions inside of the `pkg/`
We also remain committed to not changing publicly accessible Go library definitions inside of the `pkg/` directory of our source code in a non-backwards-compatible way.
directory of our source code.
For more details on Helm’s minor and patch release backwards-compatibility rules, please read [HIP-0004](https://github.com/helm/community/blob/main/hips/hip-0004.md)
For a quick summary of our backward compatibility guidelines for releases between 3.0 and 4.0:
For a quick summary of our backward compatibility guidelines for releases between 3.0 and 4.0:
@ -126,7 +127,7 @@ For a quick summary of our backward compatibility guidelines for releases betwee
(barring the cases where (a) Kubernetes itself changed, and (b) the chart worked because it
(barring the cases where (a) Kubernetes itself changed, and (b) the chart worked because it
exploited a bug)
exploited a bug)
- Chart repository functionality MUST be backward compatible
- Chart repository functionality MUST be backward compatible
- Go libraries inside of `pkg/`SHOULD remain backward compatible, though code inside of `cmd/` and
- Go libraries inside of `pkg/`MUST remain backward compatible, though code inside of `cmd/` and
`internal/` may be changed from release to release without notice.
`internal/` may be changed from release to release without notice.
@ -92,6 +92,7 @@ func newReleaseTestCmd(cfg *action.Configuration, out io.Writer) *cobra.Command
f.DurationVar(&client.Timeout,"timeout",300*time.Second,"time to wait for any individual Kubernetes operation (like Jobs for hooks)")
f.DurationVar(&client.Timeout,"timeout",300*time.Second,"time to wait for any individual Kubernetes operation (like Jobs for hooks)")
f.BoolVar(&outputLogs,"logs",false,"dump the logs from test pods (this runs after all tests are complete, but before any cleanup)")
f.BoolVar(&outputLogs,"logs",false,"dump the logs from test pods (this runs after all tests are complete, but before any cleanup)")
f.StringSliceVar(&filter,"filter",[]string{},"specify tests by attribute (currently \"name\") using attribute=value syntax or '!attribute=value' to exclude a test (can specify multiple or separate values with commas: name=test1,name=test2)")
f.StringSliceVar(&filter,"filter",[]string{},"specify tests by attribute (currently \"name\") using attribute=value syntax or '!attribute=value' to exclude a test (can specify multiple or separate values with commas: name=test1,name=test2)")
f.BoolVar(&client.HideNotes,"hide-notes",false,"if set, do not show notes in test output. Does not affect presence in chart metadata")
f.IntVar(&client.MaxHistory,"history-max",settings.MaxHistory,"limit the maximum number of revisions saved per release. Use 0 for no limit")
f.IntVar(&client.MaxHistory,"history-max",settings.MaxHistory,"limit the maximum number of revisions saved per release. Use 0 for no limit")
f.BoolVar(&client.CleanupOnFail,"cleanup-on-fail",false,"allow deletion of new resources created in this upgrade when upgrade fails")
f.BoolVar(&client.CleanupOnFail,"cleanup-on-fail",false,"allow deletion of new resources created in this upgrade when upgrade fails")
f.BoolVar(&client.SubNotes,"render-subchart-notes",false,"if set, render subchart notes along with the parent")
f.BoolVar(&client.SubNotes,"render-subchart-notes",false,"if set, render subchart notes along with the parent")
f.BoolVar(&client.HideNotes,"hide-notes",false,"if set, do not show notes in upgrade output. Does not affect presence in chart metadata")
f.StringToStringVarP(&client.Labels,"labels","l",nil,"Labels that would be added to release metadata. Should be separated by comma. Original release labels will be merged with upgrade labels. You can unset label using null.")
f.StringToStringVarP(&client.Labels,"labels","l",nil,"Labels that would be added to release metadata. Should be separated by comma. Original release labels will be merged with upgrade labels. You can unset label using null.")
f.StringVar(&client.Description,"description","","add a custom description")
f.StringVar(&client.Description,"description","","add a custom description")
f.BoolVar(&client.DependencyUpdate,"dependency-update",false,"update dependencies if they are missing before installing the chart")
f.BoolVar(&client.DependencyUpdate,"dependency-update",false,"update dependencies if they are missing before installing the chart")
missing=append(missing,fmt.Sprintf("%q (repository %q, version %q)",d.Name,d.Repository,d.Version))
}
}
}
}
iflen(missing)>0{
iflen(missing)>0{
returnnil,errors.Errorf("can't get a valid version for repositories %s. Try changing the version constraint in Chart.yaml",strings.Join(missing,", "))
returnnil,errors.Errorf("can't get a valid version for %d subchart(s): %s. Make sure a matching chart version exists in the repo, or change the version constraint in Chart.yaml",len(missing),strings.Join(missing,", "))
# verifySupported checks that the os/arch combination is supported for
# verifySupported checks that the os/arch combination is supported for
# binary builds.
# binary builds.
verifySupported() {
verifySupported() {
local supported="darwin-amd64\nlinux-386\nlinux-amd64\nlinux-arm\nlinux-arm64\nlinux-ppc64le\nlinux-s390x\nlinux-riscv64\nwindows-amd64"
local supported="darwin-amd64\nlinux-386\nlinux-amd64\nlinux-arm\nlinux-arm64\nlinux-ppc64le\nlinux-s390x\nlinux-riscv64\nwindows-amd64\nwindows-arm64"
if ! echo "${supported}" | grep -q "${OS}-${ARCH}"; then
if ! echo "${supported}" | grep -q "${OS}-${ARCH}"; then
echo "No prebuilt binary for ${OS}-${ARCH}."
echo "No prebuilt binary for ${OS}-${ARCH}."
echo "To build from source, go to https://github.com/helm/helm"
echo "To build from source, go to https://github.com/helm/helm"
# verifySupported checks that the os/arch combination is supported for
# verifySupported checks that the os/arch combination is supported for
# binary builds, as well whether or not necessary tools are present.
# binary builds, as well whether or not necessary tools are present.
verifySupported() {
verifySupported() {
local supported="darwin-amd64\ndarwin-arm64\nlinux-386\nlinux-amd64\nlinux-arm\nlinux-arm64\nlinux-ppc64le\nlinux-s390x\nlinux-riscv64\nwindows-amd64"
local supported="darwin-amd64\ndarwin-arm64\nlinux-386\nlinux-amd64\nlinux-arm\nlinux-arm64\nlinux-ppc64le\nlinux-s390x\nlinux-riscv64\nwindows-amd64\nwindows-arm64"
if ! echo "${supported}" | grep -q "${OS}-${ARCH}"; then
if ! echo "${supported}" | grep -q "${OS}-${ARCH}"; then
echo "No prebuilt binary for ${OS}-${ARCH}."
echo "No prebuilt binary for ${OS}-${ARCH}."
echo "To build from source, go to https://github.com/helm/helm"
echo "To build from source, go to https://github.com/helm/helm"
The [Quickstart Guide](https://helm.sh/docs/intro/quickstart/) will get you going from there. For **upgrade instructions** or detailed installation notes, check the [install guide](https://helm.sh/docs/intro/install/). You can also use a [script to install](https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3) on any system with \`bash\`.
The [Quickstart Guide](https://helm.sh/docs/intro/quickstart/) will get you going from there. For **upgrade instructions** or detailed installation notes, check the [install guide](https://helm.sh/docs/intro/install/). You can also use a [script to install](https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3) on any system with \`bash\`.