Skip to content

Commit d34f98b

Browse files
committed
Retrieve the latest kindest/node image for tests
After talking with Release team of K8s they told me that they do not always create images for every version of k8s. In this PR we are changing our logic to retrieve the latest publish image of kindest/node from docker hub itself. As part of the change we are also adding a warning, because now these 2 versions are decoupled, whenever a new minor of k8s is released and they do not publish a new kindest/node image, we write a warning in the output. Signed-off-by: Joao Pereira <joaopapereira@gmail.com>
1 parent f5eb5f9 commit d34f98b

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

.github/workflows/test-gh.yml

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,28 @@ jobs:
2525
run: |
2626
k8s_version=${{ matrix.k8s-version }}
2727
if [ "${k8s_version}" = "latest" ]; then
28-
k8s_version=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/kubernetes/kubernetes/releases/latest | grep -oE 'tag/v[0-9]+\.[0-9]+\.[0-9]+' | cut -d'/' -f2)
29-
echo "Resolved latest k8s version to: $k8s_version"
28+
# Resolve to the latest kindest/node tag available on Docker Hub (not kubernetes/kubernetes releases,
29+
# which may lag behind kind image availability)
30+
k8s_version=$(curl -s "https://hub.docker.com/v2/repositories/kindest/node/tags?page_size=100&ordering=last_updated" \
31+
| grep -oE '"name":"v[0-9]+\.[0-9]+\.[0-9]+"' \
32+
| grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' \
33+
| sort -V | tail -1)
34+
echo "Resolved latest kindest/node version to: $k8s_version"
35+
36+
# Warn if kind's latest minor version lags behind the latest upstream Kubernetes minor version
37+
k8s_latest=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/kubernetes/kubernetes/releases/latest \
38+
| grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+')
39+
kind_minor=$(echo "$k8s_version" | cut -d'.' -f2)
40+
k8s_minor=$(echo "$k8s_latest" | cut -d'.' -f2)
41+
if [ "$kind_minor" -lt "$k8s_minor" ]; then
42+
echo "::warning::kindest/node latest is $k8s_version (minor=$kind_minor) but upstream Kubernetes latest is $k8s_latest (minor=$k8s_minor). kind has not yet published an image for the newest minor version."
43+
fi
3044
fi
31-
echo "k8s_version=$k8s_version" >> $GITHUB_ENV
32-
- name: Create Kind Cluster(k8s version ${{ env.k8s_version }})
45+
echo "k8s_version=${k8s_version}" >> $GITHUB_ENV
46+
- name: Create Kind Cluster (k8s version ${{ env.k8s_version }})
3347
run: |
34-
k8s_version=${{ env.k8s_version }}
35-
echo "Checking if kindest/node:${k8s_version} exists..."
36-
if docker pull kindest/node:${k8s_version}; then
37-
echo "Using kindest/node:${k8s_version}"
38-
kind create cluster --image kindest/node:${k8s_version}
39-
else
40-
echo "kindest/node:${k8s_version} not found. Using fallback image ghcr.io/carvel-dev/kindest/node:${k8s_version}"
41-
kind create cluster --image ghcr.io/carvel-dev/kindest/node:${k8s_version}
42-
fi
48+
echo "Creating kind cluster with kindest/node:${{ env.k8s_version }}"
49+
kind create cluster --image kindest/node:${{ env.k8s_version }}
4350
- name: Verify kind and k8s version
4451
run: |
4552
kind version

0 commit comments

Comments
 (0)