kubernetes/hack/verify-featuregates.sh
Patrick Ohly ad012f63f7 hack/verify-featuregates.sh: print failure information to stderr
Verify scripts are run such that stderr is captured and included in the JUnit
files. Stdout is not. Therefore the instructions in case of a failure where
only visible by searching the entire job log file, but not in the Prow summary.
2025-12-26 10:37:10 +01:00

50 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
# Copyright 2024 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This script checks test/compatibility_lifecycle/reference/versioned_feature_list.yaml
# and test/compatibility_lifecycle/reference/feature_list.md are up to date with all the
# feature gate features, and verifies no feature is removed before 3 versions post `lockedToDefault:true`.
# We should run `hack/update-featuregates.sh` if the list is out of date.
# Usage: `hack/verify-featuregates.sh`.
set -o errexit
set -o nounset
set -o pipefail
KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
source "${KUBE_ROOT}/hack/lib/init.sh"
kube::golang::setup_env
cd "${KUBE_ROOT}"
if ! go run test/compatibility_lifecycle/main.go feature-gates verify; then
echo >&2 "Please run 'hack/update-featuregates.sh' to update the feature list."
exit 1
fi
# Verify feature_list.md is up to date
FEATURE_LIST_MD="test/compatibility_lifecycle/reference/feature_list.md"
TMPFILE=$(mktemp)
trap 'rm -f "${TMPFILE}"' EXIT
go run cmd/genfeaturegates/genfeaturegates.go -output="${TMPFILE}"
if ! diff -q "${FEATURE_LIST_MD}" "${TMPFILE}" > /dev/null 2>&1; then
echo >&2 "${FEATURE_LIST_MD} is out of date."
echo >&2 "Please run 'hack/update-featuregates.sh' to update the feature list."
exit 1
fi