Repository navigation
chore: bump default kind and kubectl - #169
Merged
Merged
Conversation
kind v0.31.0 predates two upstream releases and pins clusters to Kubernetes 1.35. Most consumers run this action to test against current upstream, so a stale default silently validates against an older Kubernetes than intended. kubectl v1.37.0 matches the node image kind v0.33.0 defaults to, preserving the client/server version pairing the previous defaults provided. Refs helm#168 Signed-off-by: Yuriy Novostavskiy <yuriy@novostavskiy.kyiv.ua>
yurnov
force-pushed
the
bump-default-versions
branch
from
August 31, 2026 17:55
a34c3c5 to
1da17af
Compare
Contributor
Author
|
Rebased and pushed with |
Contributor
Author
|
Hi @cpanato, may I ask you to have this PR reviewed? |
cpanato
reviewed
Sep 1, 2026
| @@ -0,0 +1,75 @@ | |||
| name: Update Versions | |||
Member
There was a problem hiding this comment.
can you drop this job, we dont want this for now
Contributor
Author
There was a problem hiding this comment.
Sure, will do in the second
yurnov
force-pushed
the
bump-default-versions
branch
from
September 1, 2026 08:31
1da17af to
0fbfe29
Compare
This was referenced Sep 4, 2026
This was referenced Sep 10, 2026
Merged
chore(deps): bump helm/kind-action from 1.14.0 to 1.15.0
saidsef/argocd-applicationsets-services#317
Merged
1 task
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.
Closes #168.
Two commits: the bump the issue asked for, and a scheduled job so the next one does not need a human to notice.
This is the cautious version, where the automation opens a pull request and you merge it. A fully hands-off variant is possible too — test, update and tag without any manual step -- and I would rather you picked than have me assume; see On how much of this to automate below.
chore: bump default kind to v0.33.0 and kubectl to v1.37.0DEFAULT_KIND_VERSION:v0.31.0->v0.33.0DEFAULT_KUBECTL_VERSION:v1.35.0->v1.37.0Updated in
kind.sh,action.yml(both thedefault:and the input description) andREADME.md, which is all six places the two strings appear.node_imageneeds no change -- the action has no default of its own and inherits kind's.kind v0.33.0 defaults to
kindest/node:v1.37.0, sov1.37.0keeps the client and the default node image on the same minor, exactly as the previous pair did.feat: add weekly workflow to track kind and kubectl releasesEDIT: this commit was dropped, and the branch was forced without it. So, everything below is just historical context
.github/workflows/update-versions.yamlrunshack/update-versions.shevery Monday at 06:00 UTC (and onworkflow_dispatch), and opens a pull request when either default has moved.The interesting part is deciding which kubectl matches a given kind release. Deriving it arithmetically is tempting and does work for the minor -- kind v0.33.0 to 1.37, v0.32.0 to 1.36, v0.31.0 to 1.35, and so on back -- but it breaks on the patch: kind v0.32.0 defaults to
v1.36.1and v0.29.0 tov1.33.1, not.0. So the script reads kind's own constant instead:releases/latestredirect. No API call, so no token and no shared-runner rate limit.pkg/apis/config/defaults/image.goat that tag and take thekindest/node:vX.Y.Zit pins. This is the value kind itself uses, so it cannot drift from what a user actually gets.dl.k8s.io/release/stable-X.Y.txt, the newest patch of that minor. Client and cluster share a minor, which is what the skew policy requires, while the patch is free to differ -- av1.37.4kubectl is a supported client for av1.37.0cluster.That last point also means kubectl bumps on its own when a new patch lands in the current minor, without waiting for a kind release.
The script only needs
curland coreutils -- nojq, no third-party action. It refuses to write anything unless both resolved versions look likevX.Y.Z, and after rewriting it re-counts the references in all three files and fails if any of the six did not take, so a partial rewrite cannot land anaction.ymlwhosedefault:disagrees with its own description.Re-runs force-push to a single
automated/update-versionsbranch and update the open pull request rather than opening a second one.On how much of this to automate
What is here is the conservative half: the workflow proposes and a maintainer decides. Every bump still arrives as a pull request that somebody reads and merges, and cutting a release stays a separate manual step.
The other end is possible too, and may be closer to what the issue is really after: let the workflow run the existing Test suite against the bumped tree, commit straight to
mainonce it passes, then tag the release and movev1so every@v1consumer picks up the new kind and kubectl without anyone doing anything. That closes the loop properly — the defaults would never be stale, rather than never being stale for more than a week.I did not build that one, because it changes things that are yours to decide rather than mine:
main, so branch protection has to exempt it or it needs a GitHub App token rather than the built-inGITHUB_TOKEN.v1automatically means a kind or Kubernetes release reaches every consumer of this action with no human in the loop. That is the point of it, but an upstream regression would travel just as fast.maincurrently carries five commits that are not in v1.14.0, so a tag triggered by a version bump would also ship whatever else has landed since the last release. "Bump the defaults" and "cut a release" are not quite the same decision right now.There is also an in-between: auto-merge the generated pull request once Test passes, but leave releases manual. That one still needs the token change described below, since Test does not currently run on a pull request the built-in token opened.
Happy to rework this pull request into whichever shape you prefer — just say which, and I will update this branch rather than opening a second pull request.
Notes for reviewers
Worth knowing before merging: pull requests opened with the default
GITHUB_TOKENdo not triggeron: pull_requestworkflows, so Test will not run automatically on the generated pull request. Pushing a commit to the branch, or closing and reopening it, runs the suite. If you would rather it ran unattended, the fix is a PAT or a GitHub App token in place ofGH_TOKEN— I left it on the built-in token because that needs no secret and no decision from me.DEFAULT_CLOUD_PROVIDER_KIND_VERSIONis also behind (0.6.0, upstream is atv0.11.1) and is not touched here, since it is outside what #168 asked for and its constant is stored without thevprefix, so the script would need a special case. Happy to do it in a separate pull request if you want it, either as a plain bump or wired into the same workflow.I have not verified the workflow end to end, since a scheduled workflow that opens pull requests can only really be exercised on the repository itself. The script half is tested: run against the pre-bump tree it reproduces the first commit byte for byte, against the post-bump tree it reports no change and writes nothing, it bumps kubectl alone when only the patch has moved, and it exits non-zero when a reference fails to rewrite.
AI Usage Disclosure