Add v1.31, v1.30 to GHA matrix and use latest Kind k8s patch for each minor versions for e2e #7700
Workflow file for this run
This file contains 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
name: "Verify Velero CRDs across k8s versions" | |
on: | |
pull_request: | |
# Do not run when the change only includes these directories. | |
paths-ignore: | |
- "site/**" | |
- "design/**" | |
jobs: | |
# Build the Velero CLI once for all Kubernetes versions, and cache it so the fan-out workers can get it. | |
build-cli: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the code | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
# Look for a CLI that's made for this PR | |
- name: Fetch built CLI | |
id: cache | |
uses: actions/cache@v4 | |
env: | |
cache-name: cache-velero-cli | |
with: | |
path: ./_output/bin/linux/amd64/velero | |
# The cache key a combination of the current PR number, and a SHA256 hash of the Velero binary | |
key: velero-${{ github.event.pull_request.number }}-${{ hashFiles('./_output/bin/linux/amd64/velero') }} | |
# This key controls the prefixes that we'll look at in the cache to restore from | |
restore-keys: | | |
velero-${{ github.event.pull_request.number }}- | |
# If no binaries were built for this PR, build it now. | |
- name: Build Velero CLI | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
make local | |
# Create json of k8s versions to test | |
# from guide: https://stackoverflow.com/a/65094398/4590470 | |
setup-test-matrix: | |
runs-on: ubuntu-latest | |
env: | |
GH_TOKEN: ${{ github.token }} | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- name: Set k8s versions | |
id: set-matrix | |
# everything excluding older tags below 1.25. limits needs to be high enough to cover all latest versions | |
# grep -E "v[1-9]\.(2[5-9]|[3-9][0-9])" filters for v1.25 to v9.99 | |
# and removes older patches of the same minor version | |
# awk -F. '{if(!a[$1"."$2]++)print $1"."$2"."$NF}' | |
run: | | |
echo "matrix={\"k8s\":$(wget -q -O - "https://hub.docker.com/v2/namespaces/kindest/repositories/node/tags?page_size=50" | grep -o '"name": *"[^"]*' | grep -o '[^"]*$' | grep -v -E "alpha|beta" | grep -E "v[1-9]\.(2[5-9]|[3-9][0-9])" | awk -F. '{if(!a[$1"."$2]++)print $1"."$2"."$NF}' | sort -r | sed s/v//g | jq -R -c -s 'split("\n")[:-1]')}" >> $GITHUB_OUTPUT | |
# Check the common CLI against all Kubernetes versions | |
crd-check: | |
needs: | |
- build-cli | |
- setup-test-matrix | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: ${{fromJson(needs.setup-test-matrix.outputs.matrix)}} | |
# All steps run in parallel unless otherwise specified. | |
# See https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows#creating-dependent-jobs | |
steps: | |
- name: Fetch built CLI | |
id: cache | |
uses: actions/cache@v4 | |
env: | |
cache-name: cache-velero-cli | |
with: | |
path: ./_output/bin/linux/amd64/velero | |
# The cache key a combination of the current PR number, and a SHA256 hash of the Velero binary | |
key: velero-${{ github.event.pull_request.number }}-${{ hashFiles('./_output/bin/linux/amd64/velero') }} | |
# This key controls the prefixes that we'll look at in the cache to restore from | |
restore-keys: | | |
velero-${{ github.event.pull_request.number }}- | |
- uses: engineerd/[email protected] | |
with: | |
version: "v0.21.0" | |
image: "kindest/node:v${{ matrix.k8s }}" | |
- name: Install CRDs | |
run: | | |
kubectl cluster-info | |
kubectl get pods -n kube-system | |
kubectl version | |
echo "current-context:" $(kubectl config current-context) | |
echo "environment-kubeconfig:" ${KUBECONFIG} | |
./_output/bin/linux/amd64/velero install --crds-only --dry-run -oyaml | kubectl apply -f - |