Files
2026-07-13 11:59:58 +08:00

51 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Check the Helm chart's embedded config_version is not behind config.example.yaml.
#
# The chart's `config:` block in deploy/helm/deer-flow/values.yaml embeds a
# config_version that must not lag config.example.yaml. A stale version is
# silent in-cluster (the image ships no example to compare against, so
# _check_config_version never warns) but means the chart's config is authored
# against an older schema - so this fails the build, not a user's install.
# config_version gates no runtime behavior; it only drives the outdated-warning,
# so a bare version bump needs no field changes.
#
# Usage:
# scripts/check_config_version.sh
#
# Called by .github/workflows/chart.yaml (validate-chart, on PRs + v* tags) and
# .github/workflows/nightly.yaml (validate-chart) so both stay in sync.
#
# Exit status is 0 when the chart is current, 1 otherwise.
set -uo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
EXAMPLE_YAML="$ROOT/config.example.yaml"
VALUES_YAML="$ROOT/deploy/helm/deer-flow/values.yaml"
for f in "$EXAMPLE_YAML" "$VALUES_YAML"; do
if [ ! -f "$f" ]; then
echo "::error::missing file: $f" >&2
exit 1
fi
done
example=$(grep -E '^config_version:[[:space:]]+[0-9]+' "$EXAMPLE_YAML" | head -1 | awk '{print $2}')
chart=$(awk '/^config:[[:space:]]*\|/{f=1; next} f && /^[[:space:]]+config_version:[[:space:]]+[0-9]+/ {print $2; exit}' "$VALUES_YAML")
printf 'config.example.yaml config_version=%s\n' "$example"
printf 'chart values.yaml config_version=%s\n' "$chart"
if [ -z "$example" ] || [ -z "$chart" ]; then
echo "::error::could not parse config_version from one of the files" >&2
exit 1
fi
if [ "$chart" -lt "$example" ]; then
echo "::error::chart config_version ($chart) is behind config.example.yaml ($example). Bump 'config_version' in deploy/helm/deer-flow/values.yaml (and the README example) to $example." >&2
exit 1
fi
echo "OK - chart config_version ($chart) is current with config.example.yaml ($example)."