Update GitHub Actions to the latest versions - #12
Merged
Merged
Conversation
Bump azure/setup-kubectl v4 -> v5 and azure/setup-helm v4 -> v5. Both v4 releases run on the node20 runtime, which GitHub deprecates. Both v5 releases run on node24 and remove the deprecation warning. Bump actions/checkout v5 -> v7 in the release workflow. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bump the kubectl default from v1.33.1 to v1.35.8, and the Helm default from v3.17.3 to v3.21.4. Helm v3.21.4 carries no breaking change against v3.17.3. It also skips the v3.18.x window, in which the ORAS v2 migration broke OCI registry login and chart pull. Helm v3.19.0 fixed both. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The clusters run v1.35.7 today, and they move to v1.36 soon. kubectl v1.36.4 sits one minor above the cluster now, and it matches the cluster exactly after the upgrade. Both states stay inside the supported version skew window, so the action needs no second bump. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Azure/setup-kubectl v5 resolves a major.minor input to the latest patch through https://dl.k8s.io/release/stable-1.36.txt. The clusters already float their patch version, because the do-cluster module sets auto_upgrade with a fixed minor. kubectl now follows the same model. Azure/setup-helm has no equivalent, so helm-version keeps a full version. Also correct the readme, which documented the input as kube-version and still showed the old default versions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alexlanz
approved these changes
Sep 7, 2026
alexlanz
left a comment
Member
There was a problem hiding this comment.
Please update the information of this change also in the repositories checklist:
Member
Author
|
Done, I documented the |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
I noticed this as the following workflow run reported this warning:
https://github.com/aboutbits/boilerplate-api/actions/runs/34054228876/job/101543814380?pr=233#step:3:13
The blog post says that Node 20 support will be completely removed on September 23rd, 2026,
so
aboutbits/github-actions-kubernetes/setup-kubectl-and-helmwould have stopped working after that datesetup-kubectl-and-helmis the source.azure/setup-kubectl@v4andazure/setup-helm@v4are the only two actions in this repository that declare thenode20runtime.Every other action here is already on
node24, or it is composite.Changes
Action versions
setup-kubectl-and-helm/action.ymlazure/setup-kubectlsetup-kubectl-and-helm/action.ymlazure/setup-helm.github/workflows/release.ymlactions/checkoutDefault tool versions
setup-kubectl-and-helm/action.ymlkubectl-versionv1.33.1v1.36setup-kubectl-and-helm/action.ymlhelm-versionv3.17.3v3.21.4Both inputs stay overridable, so a consumer can pin any other version.
The readme also gets a correction. It documented the input as
kube-version, but the action defineskubectl-version.It also still showed the old default versions.
Breaking change review
I read the release notes of every bumped action. Result: no breaking change affects this repository.
azure/setup-kubectlv4 -> v5node20tonode24.cdn.dl.k8s.iotodl.k8s.io. Check any egress allowlist on self-hosted runners. GitHub-hosted runners are not affected.major.minorinput and resolves it to the latest patch of that minor. This PR uses that form. The kubectl section below explains the choice.azure/setup-helmv4 -> v5node20tonode24and migrates the build to ESM.actions/checkoutv5 -> v7.git/config. No action in this repository reads.git/configor the auth header, so nothing breaks.The input
persist-credentialsstill defaults totrue, sogit-commit-and-push-allstill pushes.pull_request_targetorworkflow_run.The new input
allow-unsafe-pr-checkout: trueopts back in. This release workflow usesworkflow_dispatch, so the block does not apply.Helm v3.17.3 -> v3.21.4
I scanned all 22 intermediate releases: v3.17.4, six v3.18.x, six v3.19.x, three v3.20.x and five v3.21.x.
I checked both the summaries and the full commit changelogs. No breaking change.
--atomic,--wait,--history-max,--set-fileand--values.HELM_DRIVER: configmapssetting inhelm-deployis unchanged.Two more facts:
kubectl v1.33.1 -> v1.36
The new default is
v1.36, amajor.minorvalue.Azure/setup-kubectlv5 resolves it to the latest patch of that minor throughhttps://dl.k8s.io/release/stable-1.36.txt, which returnsv1.36.4today.Why a minor version, and not a full version. The
do-clustermodule setsauto_upgrade = trueand pinscluster_version = "1.35".The clusters therefore already float their patch version inside a fixed minor.
kubectlnow follows the same model, and it picks up client patches without a PR.Why v1.36, and not v1.35. All four clusters run v1.35.7 today, and we upgrade them to v1.36 soon.
The version skew policy supports one minor above the cluster and one below it:
kubectlstays inside the supported window across the whole transition, so the action needs no second bump.I also checked the Kubernetes v1.36 changelog against the commands that this repository runs, which are
apply,rollout status,rollout undo,waitandlogs.No v1.36 client change affects any of them. The v1.36 urgent upgrade notes cover kube-controller-manager metrics and the scheduler framework, so they are server-side only.
Azure/setup-helmoffers no equivalent. Its version handling only prepends av, so amajor.minorvalue such asv3.21produces a 404.helm-versiontherefore keeps a full version.Follow-up items, not in this PR
sedcommand in.github/workflows/release.ymlrewrites everyuses: ...@vNinreadme.md. It does not limit the match toaboutbits/references, so it also overwrites third-party examples.github-actions-vercel/readme.mdalready shows the damage: it documentsactions/checkout@v1.This repository has no third-party example in its readme yet, so no damage exists here.
A v3 to v4 bump is a major version change that can break consumers, so it needs its own PR and its own test round.
Test plan
actions/checkout@v7succeeds.setup-kubectl-and-helmand confirm that the Node 20 warning is gone.v1.36to the latest v1.36 patch, and that Helm installs atv3.21.4.kubectl applyandkubectl rollout statusbehave as before.helm-deployagainst a preview environment, and confirm thathelm registry loginandhelm pull oci://still work on Helm v3.21.4.🤖 Generated with Claude Code