Robert Sirchia
|
f0386b1daa
|
Merge pull request #31338 from yzewei/add-loong64-support
Add loongarch64 support
|
2025-10-21 15:51:31 -04:00 |
Matt Farina
|
76e6b7a6fe
|
Merge pull request #31390 from TerryHowe/chore-increase-helm-list-test-coverage
fix: improve pkg/cmd/list test coverage
|
2025-10-21 15:49:13 -04:00 |
Matt Farina
|
97ee09d935
|
Merge pull request #31365 from reddaisyy/main
refactor: use reflect.TypeFor
|
2025-10-21 15:43:07 -04:00 |
Matt Farina
|
2cfd41ec28
|
Merge pull request #31351 from gjenkins8/gjenkins/helm_version_kubeversion
feat: `helm version` print Kubernetes (client-go) version
|
2025-10-21 15:32:40 -04:00 |
Matt Farina
|
752354074c
|
Merge pull request #31393 from benoittgt/12299
Return errors during upgrade when the deletion of resources fails
|
2025-10-21 15:29:58 -04:00 |
Matt Farina
|
37de51428c
|
Merge pull request #31376 from benoittgt/accept-yaml-yml
Do not ignore *.yml file on linting while accepting *.yaml
|
2025-10-21 15:23:40 -04:00 |
Robert Sirchia
|
3924cf3781
|
Merge pull request #31362 from fabiocarneiro/patch-1
Clarify the intent of the resource instructions
|
2025-10-21 15:21:16 -04:00 |
Matt Farina
|
b0247ce8bf
|
Merge pull request #31395 from wyrapeseed/main
chore: fix some comment format
|
2025-10-21 15:20:09 -04:00 |
Matt Farina
|
d0225754f2
|
Merge pull request #31406 from jessesimpson36/jessesimpson36/fix-nil-pointer-empty-result
fix: kube client should return empty results objects instead of nil
|
2025-10-21 12:36:35 -04:00 |
Andreas Sommer
|
b05411506a
|
Improve error message when plugin source cannot be determined or a non-directory is passed
Signed-off-by: Andreas Sommer <andreas.sommer87@googlemail.com>
|
2025-10-20 15:25:59 +02:00 |
Terry Howe
|
0f6e14dfd3
|
chore: fix various warnings to reduce noise
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-18 07:21:00 -06:00 |
Jesse Simpson
|
3f860e83fb
|
fix: use empty results instead of nil
Signed-off-by: Jesse Simpson <jesse.simpson36@gmail.com>
|
2025-10-18 09:12:58 -04:00 |
Jesse Simpson
|
96b4c363c8
|
fix: Update returns nil on error, test should reflect this
Signed-off-by: Jesse Simpson <jesse.simpson36@gmail.com>
|
2025-10-17 23:25:21 -04:00 |
Matt Farina
|
490dffeb34
|
Merge pull request #31401 from TerryHowe/refactor-remove-unused-err
refactor: remove unused err from pkg/registry/client.go
|
2025-10-17 15:32:08 -04:00 |
Terry Howe
|
917822cfca
|
refactor: remove unused err from pkg/registry/client.go
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-17 05:08:32 -06:00 |
George Jenkins
|
4f585add24
|
Merge pull request #31392 from TerryHowe/feature-create-copilot-structured-context
feature: create copilot structured context
|
2025-10-16 11:09:09 +01:00 |
George Jenkins
|
f14c89c936
|
Merge pull request #31391 from TerryHowe/chore-rename-test-registry
chore: rename test registry
|
2025-10-15 14:02:50 +01:00 |
wyrapeseed
|
b9eadd3186
|
chore: fix some comment format
Signed-off-by: wyrapeseed <wyrapeseed@outlook.com>
|
2025-10-15 11:19:41 +08:00 |
Benoit Tigeot
|
7097c8e2e5
|
Replicate as unit test case where we fail once a resource deletion
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
|
2025-10-15 00:33:15 +02:00 |
Benoit Tigeot
|
054eabddd7
|
Return errors on upgrade when deletion fails
This is a rebase of https://github.com/helm/helm/pull/12299
as the pull request was tagged for Helm v4.
Closes: https://github.com/helm/helm/issues/11375
Related: https://github.com/helm/helm/pull/7929
It was a pain to reproduce, here is a script:
```
set -u
NS=default
RELEASE=test-release
CHART=./test-chart
SA=limited-helm-sa
HELM=${HELM:-./bin/helm}
echo "Helm: $($HELM version)"
echo "Cleaning…"
$HELM uninstall "$RELEASE" -n "$NS" >/dev/null 2>&1 || true
kubectl -n "$NS" delete sa "$SA" role "${SA}-role" rolebinding "${SA}-rb" >/dev/null 2>&1 || true
kubectl -n "$NS" delete cronjob "$RELEASE-test-chart-cronjob" >/dev/null 2>&1 || true
rm -rf "$CHART" /tmp/limited-helm-kubeconfig
echo "Create minimal chart with only a CronJob"
$HELM create "$CHART" >/dev/null
rm -f "$CHART"/templates/{deployment.yaml,service.yaml,hpa.yaml,tests/test-connection.yaml,serviceaccount.yaml}
cat > "$CHART/templates/cronjob.yaml" <<'YAML'
apiVersion: batch/v1
kind: CronJob
metadata:
name: {{ include "test-chart.fullname" . }}-cronjob
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: hello
image: busybox
command: ["/bin/sh","-c","date; echo Hello from CronJob"]
YAML
echo "RBAC: allow Helm storage, basic reads/creates, but NO delete on cronjobs"
kubectl -n "$NS" apply -f - >/dev/null <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: $SA
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: ${SA}-role
rules:
- apiGroups: [""]
resources: ["secrets","configmaps"]
verbs: ["get","list","watch","create","patch","update","delete"]
- apiGroups: [""]
resources: ["pods","events"]
verbs: ["get","list","watch"]
- apiGroups: ["batch"]
resources: ["cronjobs"]
verbs: ["get","list","watch","create","patch","update"]
EOF
kubectl -n "$NS" apply -f - >/dev/null <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ${SA}-rb
subjects:
- kind: ServiceAccount
name: $SA
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ${SA}-role
EOF
echo "Create kubeconfig for that SA"
TOKEN=$(kubectl -n "$NS" create token "$SA")
SERVER=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')
CA_DATA=$(kubectl config view --minify --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
KCFG=/tmp/limited-helm-kubeconfig
cat > "$KCFG" <<EOF
apiVersion: v1
kind: Config
clusters:
- name: local
cluster:
server: $SERVER
certificate-authority-data: $CA_DATA
contexts:
- name: limited
context:
cluster: local
namespace: $NS
user: $SA
current-context: limited
users:
- name: $SA
user:
token: $TOKEN
EOF
set +e
echo "Install (as limited SA)"
KUBECONFIG="$KCFG" $HELM upgrade --install "$RELEASE" "$CHART" -n "$NS" --wait
echo "CronJob after install:"
kubectl -n "$NS" get cronjob "$RELEASE-test-chart-cronjob" || true
echo "Remove CronJob from chart and add a small ConfigMap to force an upgrade"
rm -f "$CHART/templates/cronjob.yaml"
cat > "$CHART/templates/configmap.yaml" <<'YAML'
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "test-chart.fullname" . }}-config
data:
hello: world
YAML
echo "Upgrade without CronJob (as limited SA)"
KUBECONFIG="$KCFG" $HELM upgrade --install "$RELEASE" "$CHART" -n "$NS"
RC=$?
echo "Post-upgrade verification"
if kubectl -n "$NS" get cronjob "$RELEASE-test-chart-cronjob" >/dev/null 2>&1; then
echo "OK: Stale CronJob still present: $RELEASE-test-chart-cronjob"
else
echo "NO_OK: CronJob deleted"
fi
echo "Helm exit code: $RC"
exit 0
```
With the current build:
```sh
./reproduce-helm-issue.sh
Helm: version.BuildInfo{Version:"v4.0+unreleased", GitCommit:"f19bb9cd4c99943f7a4980d6670de44affe3e472", GitTreeState:"dirty", GoVersion:"go1.24.0"}
Cleaning…
Create minimal chart with CronJob + ConfigMap (we will remove both in v2)
RBAC: allow Helm storage + delete for configmaps, but NO delete on cronjobs
Create kubeconfig for that SA
Install v1 (as limited SA)
Release "test-release" does not exist. Installing it now.
NAME: test-release
LAST DEPLOYED: Tue Oct 14 18:55:57 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=test-chart,app.kubernetes.io/instance=test-release" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
Verify v1 objects exist
NAME SCHEDULE TIMEZONE SUSPEND ACTIVE LAST SCHEDULE AGE
test-release-test-chart-cronjob */5 * * * * <none> False 0 <none> 0s
NAME DATA AGE
test-release-test-chart-config 1 0s
Prepare v2: remove BOTH CronJob and ConfigMap from the chart
Upgrade to v2 (as limited SA) — expecting CronJob delete first, then ConfigMap
- CronJob delete should FAIL (no delete permission)
- ConfigMap delete should SUCCEED (delete allowed) — proves 'continue on error' and inverted order
level=DEBUG msg="getting history for release" release=test-release
level=DEBUG msg="getting release history" name=test-release
level=DEBUG msg="preparing upgrade" name=test-release
level=DEBUG msg="getting last revision" name=test-release
level=DEBUG msg="getting release history" name=test-release
level=DEBUG msg="number of dependencies in the chart" dependencies=0
level=DEBUG msg="determined release apply method" server_side_apply=true previous_release_apply_method=ssa
level=DEBUG msg="performing update" name=test-release
level=DEBUG msg="creating upgraded release" name=test-release
level=DEBUG msg="creating release" key=sh.helm.release.v1.test-release.v2
level=DEBUG msg="getting release history" name=test-release
level=DEBUG msg="using server-side apply for resource update" forceConflicts=false dryRun=false fieldValidationDirective=Strict upgradeClientSideFieldManager=false
level=DEBUG msg="checking resources for changes" resources=0
level=DEBUG msg="deleting resource" namespace=default name=test-release-test-chart-config kind=ConfigMap
level=DEBUG msg="deleting resource" namespace=default name=test-release-test-chart-cronjob kind=CronJob
level=DEBUG msg="failed to delete resource" namespace=default name=test-release-test-chart-cronjob kind=CronJob error="cronjobs.batch \"test-release-test-chart-cronjob\" is forbidden: User \"system:serviceaccount:default:limited-helm-sa\" cannot delete resource \"cronjobs\" in API group \"batch\" in the namespace \"default\""
level=INFO msg="update completed" created=0 updated=0 deleted=1
level=WARN msg="update completed with errors" errors=1
level=DEBUG msg="updating release" key=sh.helm.release.v1.test-release.v1
level=WARN msg="upgrade failed" name=test-release error="failed to delete resource test-release-test-chart-cronjob: cronjobs.batch \"test-release-test-chart-cronjob\" is forbidden: User \"system:serviceaccount:default:limited-helm-sa\" cannot delete resource \"cronjobs\" in API group \"batch\" in the namespace \"default\""
level=DEBUG msg="updating release" key=sh.helm.release.v1.test-release.v2
Error: UPGRADE FAILED: failed to delete resource test-release-test-chart-cronjob: cronjobs.batch "test-release-test-chart-cronjob" is forbidden: User "system:serviceaccount:default:limited-helm-sa" cannot delete resource "cronjobs" in API group "batch" in the namespace "default"
Post-upgrade verification
Stale CronJob still present: test-release-test-chart-cronjob (expected if delete is forbidden)
ConfigMap deleted as expected: test-release-test-chart-config (and after CronJob attempt)
Helm exit code: 1
```
With last version v3.19:
```
HELM=/usr/local/bin/helm ./reproduce-helm-issue.sh
Helm: version.BuildInfo{Version:"v3.19.0", GitCommit:"3d8990f0836691f0229297773f3524598f46bda6", GitTreeState:"clean", GoVersion:"go1.24.7"}
Cleaning…
Create minimal chart with only a CronJob
RBAC: allow Helm storage, basic reads/creates, but NO delete on cronjobs
Create kubeconfig for that SA
Install (as limited SA)
Release "test-release" does not exist. Installing it now.
NAME: test-release
LAST DEPLOYED: Tue Oct 14 19:07:01 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=test-chart,app.kubernetes.io/instance=test-release" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
CronJob after install:
NAME SCHEDULE TIMEZONE SUSPEND ACTIVE LAST SCHEDULE AGE
test-release-test-chart-cronjob */5 * * * * <none> False 0 <none> 0s
Remove CronJob from chart and add a small ConfigMap to force an upgrade
Upgrade without CronJob (as limited SA)
Release "test-release" has been upgraded. Happy Helming!
NAME: test-release
LAST DEPLOYED: Tue Oct 14 19:07:01 2025
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=test-chart,app.kubernetes.io/instance=test-release" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
Post-upgrade verification
OK: Stale CronJob still present: test-release-test-chart-cronjob
Helm exit code: 0
```
Co-authored-by: dayeguilaiye <979014041@qq.com>
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
|
2025-10-15 00:11:33 +02:00 |
Robert Sirchia
|
f19bb9cd4c
|
Merge pull request #31388 from helm/dependabot/go_modules/main/sigs.k8s.io/controller-runtime-0.22.3
chore(deps): bump sigs.k8s.io/controller-runtime from 0.22.2 to 0.22.3
|
2025-10-14 02:57:31 -04:00 |
Terry Howe
|
4edf050960
|
feature: create copilot structured context
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 17:05:23 -06:00 |
Terry Howe
|
3b2fd17799
|
chore: rename test registry
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 16:43:18 -06:00 |
Terry Howe
|
379b0899b3
|
fix: increase helm list test coverage
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 16:16:50 -06:00 |
dependabot[bot]
|
b52ce5c0cb
|
chore(deps): bump sigs.k8s.io/controller-runtime from 0.22.2 to 0.22.3
Bumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.22.2 to 0.22.3.
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](https://github.com/kubernetes-sigs/controller-runtime/compare/v0.22.2...v0.22.3)
---
updated-dependencies:
- dependency-name: sigs.k8s.io/controller-runtime
dependency-version: 0.22.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
|
2025-10-13 21:15:15 +00:00 |
George Jenkins
|
7dd2484aed
|
Merge pull request #31295 from TerryHowe/fix-make-helm-list-show-all-by-default
Fix make helm list show all by default
|
2025-10-13 20:04:19 +01:00 |
Scott Rigby
|
f0530309f0
|
Merge pull request #31302 from TerryHowe/fix-helm-verify-signature
fix: helm verify Run signature
|
2025-10-13 14:38:21 -04:00 |
Scott Rigby
|
f9d4373ea4
|
Merge pull request #31270 from TerryHowe/chore-registry-clean-up
chore: registry utils clean up
|
2025-10-13 14:36:59 -04:00 |
Terry Howe
|
abdf6603c0
|
fix test for rebase
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 11:15:26 -06:00 |
Matt Farina
|
a03e8c9541
|
Merge pull request #31375 from TerryHowe/fix-release-info-time
fix: release info time parsing
|
2025-10-13 12:42:04 -04:00 |
Terry Howe
|
f6e60138e8
|
Update pkg/cmd/list.go
Co-authored-by: George Jenkins <gvjenkins@gmail.com>
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 10:28:44 -06:00 |
Terry Howe
|
c3aa5c51e6
|
chore: clean up for comments
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 10:28:44 -06:00 |
copilot-swe-agent[bot]
|
b4f932a715
|
Fix test by making date sorting stable and updating golden files
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 10:28:43 -06:00 |
Terry Howe
|
8a73d97984
|
fix: make helm list show all by default
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-13 10:27:58 -06:00 |
Matt Farina
|
22ef282459
|
Merge pull request #31383 from dirkmueller/nil_on_error
Avoid accessing .Items on nil object
|
2025-10-13 10:06:59 -04:00 |
George Jenkins
|
8aab4098b5
|
Merge pull request #31379 from TerryHowe/fix-clean-up-from-coverage-script
fix: clean up coverage script temp file
|
2025-10-13 13:48:29 +01:00 |
Marcin Owsiany
|
269a32a6d2
|
test: protect unknown hook delete policies
Signed-off-by: Marcin Owsiany <porridge@redhat.com>
|
2025-10-13 10:31:27 +02:00 |
Dirk Müller
|
9cd40c612a
|
Avoid accessing .Items on nil object
When listing fails for whatever reason, the return value is nil, err.
so handle err explicitly.
Signed-off-by: Dirk Müller <dirk@dmllr.de>
|
2025-10-13 09:36:33 +02:00 |
Benoit Tigeot
|
06188f9dfe
|
Add test for isYamlFileExtension functions
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
|
2025-10-11 13:28:36 +02:00 |
Terry Howe
|
20eb6e9b04
|
fix: empty time values
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
|
2025-10-10 16:44:19 -06:00 |
George Jenkins
|
8d70995503
|
Merge pull request #31371 from helm/dependabot/go_modules/main/golang.org/x/crypto-0.43.0
chore(deps): bump golang.org/x/crypto from 0.42.0 to 0.43.0
|
2025-10-10 14:34:11 -07:00 |
dependabot[bot]
|
9f1f9caa7d
|
chore(deps): bump golang.org/x/crypto from 0.42.0 to 0.43.0
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.42.0 to 0.43.0.
- [Commits](https://github.com/golang/crypto/compare/v0.42.0...v0.43.0)
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.43.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
|
2025-10-10 21:23:18 +00:00 |
George Jenkins
|
6e3073914e
|
Merge pull request #31381 from helm/dependabot/go_modules/main/github.com/gofrs/flock-0.13.0
chore(deps): bump github.com/gofrs/flock from 0.12.1 to 0.13.0
|
2025-10-10 14:22:27 -07:00 |
George Jenkins
|
04f7df3e30
|
Merge pull request #31369 from helm/dependabot/go_modules/main/golang.org/x/text-0.30.0
chore(deps): bump golang.org/x/text from 0.29.0 to 0.30.0
|
2025-10-10 14:21:16 -07:00 |
dependabot[bot]
|
62127b7926
|
chore(deps): bump github.com/gofrs/flock from 0.12.1 to 0.13.0
Bumps [github.com/gofrs/flock](https://github.com/gofrs/flock) from 0.12.1 to 0.13.0.
- [Release notes](https://github.com/gofrs/flock/releases)
- [Commits](https://github.com/gofrs/flock/compare/v0.12.1...v0.13.0)
---
updated-dependencies:
- dependency-name: github.com/gofrs/flock
dependency-version: 0.13.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
|
2025-10-10 21:13:44 +00:00 |
Matt Farina
|
fbf02e494e
|
Merge pull request #30980 from gjenkins8/gjenkins/cleanup_kubeclient_interfaces
cleanup: Remove/consolidate redundant kube client Interfaces
|
2025-10-10 17:05:09 -04:00 |
Matt Farina
|
78cd44bd75
|
Merge pull request #30712 from gjenkins8/gjenkins/cleanup_lint_template
cleanup: Remove extra lint/rules.Template functions
|
2025-10-10 16:55:17 -04:00 |
Matt Farina
|
00669cdbbe
|
Merge pull request #31372 from mattfarina/release-api-actions
Enable Releases To Have Multiple Versions
|
2025-10-10 13:30:07 -04:00 |
Matt Farina
|
24159ec8b6
|
Moving new default accessor functions to internal per feedback
Signed-off-by: Matt Farina <matt.farina@suse.com>
|
2025-10-10 13:16:49 -04:00 |
Matt Farina
|
fb20e96a56
|
Adding a test/example for the release accessor
Signed-off-by: Matt Farina <matt.farina@suse.com>
|
2025-10-10 12:53:00 -04:00 |