Test with k8s 1.32.2 and upgrade tool versions used in CI (#587)

- kind 0.22.0 -> 0.27.0
- test with k8s 1.32.2 instead of 1.29.2 to ensure compatibility with latest k8s release
- default helm version 3.14.4 -> 3.16.4
- chart releaser 1.6.0 -> 1.7.0
- ubuntu 22.04 -> 24.04
- chart testing 3.11.0 -> 3.12.0
- yamllint 1.33.0 -> 1.35.1
- yamale 4.0.4 -> 6.0.0
This commit is contained in:
Lari Hotari 2025-03-06 09:50:44 +02:00 committed by GitHub
parent 18c4cc5440
commit 976ba92e3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 36 additions and 31 deletions

View File

@ -39,15 +39,15 @@ inputs:
version: version:
description: "The chart-testing version to install" description: "The chart-testing version to install"
required: false required: false
default: v3.11.0 default: v3.12.0
yamllint_version: yamllint_version:
description: "The yamllint version to install" description: "The yamllint version to install"
required: false required: false
default: '1.33.0' default: '1.35.1'
yamale_version: yamale_version:
description: "The yamale version to install" description: "The yamale version to install"
required: false required: false
default: '4.0.4' default: '6.0.0'
runs: runs:
using: composite using: composite
steps: steps:

View File

@ -35,9 +35,9 @@ set -o errexit
set -o nounset set -o nounset
set -o pipefail set -o pipefail
DEFAULT_CHART_TESTING_VERSION=v3.11.0 DEFAULT_CHART_TESTING_VERSION=v3.12.0
DEFAULT_YAMLLINT_VERSION=1.33.0 DEFAULT_YAMLLINT_VERSION=1.35.1
DEFAULT_YAMALE_VERSION=4.0.4 DEFAULT_YAMALE_VERSION=6.0.0
ARCH=$(uname -m) ARCH=$(uname -m)
case $ARCH in case $ARCH in
@ -131,18 +131,24 @@ install_chart_testing() {
tar -xzf ct.tar.gz -C "$cache_dir" tar -xzf ct.tar.gz -C "$cache_dir"
rm -f ct.tar.gz rm -f ct.tar.gz
# if uv (https://docs.astral.sh/uv/) is not installed, install it
if ! command -v uv &> /dev/null; then
echo 'Installing uv...'
curl -LsSf https://astral.sh/uv/install.sh | sh
fi
echo 'Creating virtual Python environment...' echo 'Creating virtual Python environment...'
python3 -m venv "$venv_dir" uv venv "$venv_dir"
echo 'Activating virtual environment...' echo 'Activating virtual environment...'
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "$venv_dir/bin/activate" source "$venv_dir/bin/activate"
echo 'Installing yamllint...' echo 'Installing yamllint...'
pip3 install "yamllint==${yamllint_version}" uv pip install "yamllint==${yamllint_version}"
echo 'Installing Yamale...' echo 'Installing Yamale...'
pip3 install "yamale==${yamale_version}" uv pip install "yamale==${yamale_version}"
fi fi
# https://github.com/helm/chart-testing-action/issues/62 # https://github.com/helm/chart-testing-action/issues/62

View File

@ -53,8 +53,8 @@ runs:
# tune filesystem mount options, https://www.kernel.org/doc/Documentation/filesystems/ext4.txt # tune filesystem mount options, https://www.kernel.org/doc/Documentation/filesystems/ext4.txt
# commit=999999, effectively disables automatic syncing to disk (default is every 5 seconds) # commit=999999, effectively disables automatic syncing to disk (default is every 5 seconds)
# nobarrier/barrier=0, loosen data consistency on system crash (no negative impact to empheral CI nodes) # nobarrier/barrier=0, loosen data consistency on system crash (no negative impact to empheral CI nodes)
sudo mount -o remount,nodiscard,commit=999999,barrier=0 / sudo mount -o remount,nodiscard,commit=999999,barrier=0 / || true
sudo mount -o remount,nodiscard,commit=999999,barrier=0 /mnt sudo mount -o remount,nodiscard,commit=999999,barrier=0 /mnt || true
# disable discard/trim at device level since remount with nodiscard doesn't seem to be effective # disable discard/trim at device level since remount with nodiscard doesn't seem to be effective
# https://www.spinics.net/lists/linux-ide/msg52562.html # https://www.spinics.net/lists/linux-ide/msg52562.html
for i in /sys/block/sd*/queue/discard_max_bytes; do for i in /sys/block/sd*/queue/discard_max_bytes; do
@ -77,12 +77,6 @@ runs:
# stop Azure Linux agent to save RAM # stop Azure Linux agent to save RAM
sudo systemctl stop walinuxagent.service || true sudo systemctl stop walinuxagent.service || true
# enable docker experimental mode which is
# required for using "docker build --squash" / "-Ddocker.squash=true"
daemon_json="$(sudo cat /etc/docker/daemon.json | jq '.experimental = true')"
echo "$daemon_json" | sudo tee /etc/docker/daemon.json
# restart docker daemon
sudo systemctl restart docker
echo '::endgroup::' echo '::endgroup::'
# show memory # show memory

View File

@ -34,7 +34,7 @@ concurrency:
jobs: jobs:
preconditions: preconditions:
name: Preconditions name: Preconditions
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
if: (github.event_name != 'schedule') || (github.repository == 'apache/pulsar-helm-chart') if: (github.event_name != 'schedule') || (github.repository == 'apache/pulsar-helm-chart')
outputs: outputs:
docs_only: ${{ steps.check_changes.outputs.docs_only }} docs_only: ${{ steps.check_changes.outputs.docs_only }}
@ -62,7 +62,7 @@ jobs:
license-check: license-check:
needs: preconditions needs: preconditions
name: License Check name: License Check
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
timeout-minutes: 10 timeout-minutes: 10
if: ${{ needs.preconditions.outputs.docs_only != 'true' }} if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
steps: steps:
@ -83,7 +83,7 @@ jobs:
ct-lint: ct-lint:
needs: ['preconditions', 'license-check'] needs: ['preconditions', 'license-check']
name: chart-testing lint name: chart-testing lint
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
timeout-minutes: 45 timeout-minutes: 45
if: ${{ needs.preconditions.outputs.docs_only != 'true' }} if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
steps: steps:
@ -107,13 +107,17 @@ jobs:
if: ${{ steps.check_changes.outputs.docs_only != 'true' }} if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
uses: azure/setup-helm@v4 uses: azure/setup-helm@v4
with: with:
version: v3.14.4 version: v3.16.4
- name: Set up Python - name: Set up Python
if: ${{ steps.check_changes.outputs.docs_only != 'true' }} if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: '3.9' python-version: '3.12'
- name: Install uv, a fast modern package manager for Python
if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
run: curl -LsSf https://astral.sh/uv/install.sh | sh
- name: Set up chart-testing - name: Set up chart-testing
if: ${{ steps.check_changes.outputs.docs_only != 'true' }} if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
@ -176,19 +180,20 @@ jobs:
install-chart-tests: install-chart-tests:
name: ${{ matrix.testScenario.name }} - k8s ${{ matrix.k8sVersion.version }} - ${{ matrix.testScenario.type || 'install' }} name: ${{ matrix.testScenario.name }} - k8s ${{ matrix.k8sVersion.version }} - ${{ matrix.testScenario.type || 'install' }}
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
timeout-minutes: ${{ matrix.testScenario.timeout || 45 }} timeout-minutes: ${{ matrix.testScenario.timeout || 45 }}
needs: ['preconditions', 'ct-lint'] needs: ['preconditions', 'ct-lint']
if: ${{ needs.preconditions.outputs.docs_only != 'true' }} if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
# see https://github.com/kubernetes-sigs/kind/releases/tag/v0.22.0 for the list of supported k8s versions for kind 0.22.0 # see https://github.com/kubernetes-sigs/kind/releases/tag/v0.27.0 for the list of supported k8s versions for kind 0.27.0
# docker images are available at https://hub.docker.com/r/kindest/node/tags
k8sVersion: k8sVersion:
- version: "1.23.17" - version: "1.23.17"
kind_image_tag: v1.23.17@sha256:14d0a9a892b943866d7e6be119a06871291c517d279aedb816a4b4bc0ec0a5b3 kind_image_tag: v1.23.17@sha256:14d0a9a892b943866d7e6be119a06871291c517d279aedb816a4b4bc0ec0a5b3
- version: "1.29.2" - version: "1.32.2"
kind_image_tag: v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245 kind_image_tag: v1.32.2@sha256:f226345927d7e348497136874b6d207e0b32cc52154ad8323129352923a3142f
testScenario: testScenario:
- name: Upgrade latest released version - name: Upgrade latest released version
values_file: .ci/clusters/values-upgrade.yaml values_file: .ci/clusters/values-upgrade.yaml
@ -333,7 +338,7 @@ jobs:
pulsar-helm-chart-ci-checks-completed: pulsar-helm-chart-ci-checks-completed:
name: "CI checks completed" name: "CI checks completed"
if: ${{ always() && ((github.event_name != 'schedule') || (github.repository == 'apache/pulsar-helm-chart')) }} if: ${{ always() && ((github.event_name != 'schedule') || (github.repository == 'apache/pulsar-helm-chart')) }}
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
timeout-minutes: 10 timeout-minutes: 10
needs: [ needs: [
'preconditions', 'preconditions',

View File

@ -25,14 +25,14 @@ fi
OUTPUT=${PULSAR_CHART_HOME}/output OUTPUT=${PULSAR_CHART_HOME}/output
OUTPUT_BIN=${OUTPUT}/bin OUTPUT_BIN=${OUTPUT}/bin
: "${KUBECTL_VERSION:=1.23.17}" : "${KUBECTL_VERSION:=1.28.15}"
KUBECTL_BIN=$OUTPUT_BIN/kubectl KUBECTL_BIN=$OUTPUT_BIN/kubectl
HELM_BIN=$OUTPUT_BIN/helm HELM_BIN=$OUTPUT_BIN/helm
: "${HELM_VERSION:=3.14.4}" : "${HELM_VERSION:=3.16.4}"
: "${KIND_VERSION:=0.22.0}" : "${KIND_VERSION:=0.27.0}"
KIND_BIN=$OUTPUT_BIN/kind KIND_BIN=$OUTPUT_BIN/kind
CR_BIN=$OUTPUT_BIN/cr CR_BIN=$OUTPUT_BIN/cr
: "${CR_VERSION:=1.6.0}" : "${CR_VERSION:=1.7.0}"
KUBECONFORM_BIN=$OUTPUT_BIN/kubeconform KUBECONFORM_BIN=$OUTPUT_BIN/kubeconform
: "${KUBECONFORM_VERSION:=0.6.7}" : "${KUBECONFORM_VERSION:=0.6.7}"
export PATH="$OUTPUT_BIN:$PATH" export PATH="$OUTPUT_BIN:$PATH"