From 403997f2f8337245845dadad96b3180e6e69ae9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=AD=A3=E8=B6=85?= Date: Thu, 30 Apr 2026 14:11:14 +0800 Subject: [PATCH] test(ci): cover Helm chart version mapping (#2751) --- .github/workflows/helm-package.yml | 19 +-------------- scripts/helm_chart_version.sh | 37 ++++++++++++++++++++++++++++++ scripts/test_helm_chart_version.sh | 26 +++++++++++++++++++++ 3 files changed, 64 insertions(+), 18 deletions(-) create mode 100755 scripts/helm_chart_version.sh create mode 100755 scripts/test_helm_chart_version.sh diff --git a/.github/workflows/helm-package.yml b/.github/workflows/helm-package.yml index f534292cd..0c1bf93cc 100644 --- a/.github/workflows/helm-package.yml +++ b/.github/workflows/helm-package.yml @@ -69,24 +69,7 @@ jobs: ;; esac - VERSION="$RAW_TAG" - case "$VERSION" in - v*) - VERSION="${VERSION#v}" - ;; - esac - - APP_VERSION="${RAW_TAG#v}" - BETA_NUM=$(echo "$APP_VERSION" | sed -n -E 's/^.*-beta\.([0-9]+)$/\1/p') - if [ -n "$BETA_NUM" ]; then - CHART_VERSION="0.${BETA_NUM}.0" - else - CHART_VERSION="$APP_VERSION" - fi - - echo "raw_tag=$RAW_TAG" >> "$GITHUB_OUTPUT" - echo "app_version=$APP_VERSION" >> "$GITHUB_OUTPUT" - echo "chart_version=$CHART_VERSION" >> "$GITHUB_OUTPUT" + ./scripts/helm_chart_version.sh "$RAW_TAG" - name: Replace chart version and app version run: | diff --git a/scripts/helm_chart_version.sh b/scripts/helm_chart_version.sh new file mode 100755 index 000000000..b3eb1ffe3 --- /dev/null +++ b/scripts/helm_chart_version.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ "$#" -ne 1 ]; then + echo "usage: $0 " >&2 + exit 2 +fi + +RAW="$1" +case "$RAW" in + refs/tags/*) + RAW_TAG="${RAW#refs/tags/}" + ;; + *) + RAW_TAG="$RAW" + ;; +esac + +APP_VERSION="${RAW_TAG#v}" +BETA_NUM=$(printf '%s\n' "$APP_VERSION" | sed -n -E 's/^.*-beta\.([0-9]+)$/\1/p') +if [ -n "$BETA_NUM" ]; then + CHART_VERSION="0.${BETA_NUM}.0" +else + CHART_VERSION="$APP_VERSION" +fi + +if [ -n "${GITHUB_OUTPUT:-}" ]; then + { + echo "raw_tag=$RAW_TAG" + echo "app_version=$APP_VERSION" + echo "chart_version=$CHART_VERSION" + } >>"$GITHUB_OUTPUT" +else + printf 'raw_tag=%s\n' "$RAW_TAG" + printf 'app_version=%s\n' "$APP_VERSION" + printf 'chart_version=%s\n' "$CHART_VERSION" +fi diff --git a/scripts/test_helm_chart_version.sh b/scripts/test_helm_chart_version.sh new file mode 100755 index 000000000..297f8e335 --- /dev/null +++ b/scripts/test_helm_chart_version.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +SCRIPT="$ROOT_DIR/scripts/helm_chart_version.sh" + +assert_version() { + local raw="$1" + local expected_raw_tag="$2" + local expected_app_version="$3" + local expected_chart_version="$4" + local output + + output=$(mktemp) + GITHUB_OUTPUT="$output" "$SCRIPT" "$raw" + + grep -qx "raw_tag=$expected_raw_tag" "$output" + grep -qx "app_version=$expected_app_version" "$output" + grep -qx "chart_version=$expected_chart_version" "$output" + + rm -f "$output" +} + +assert_version "refs/tags/v1.0.0-beta.12" "v1.0.0-beta.12" "1.0.0-beta.12" "0.12.0" +assert_version "v1.0.0" "v1.0.0" "1.0.0" "1.0.0" +assert_version "refs/tags/1.0.0" "1.0.0" "1.0.0" "1.0.0"