mirror of
https://github.com/bitnami/charts.git
synced 2026-03-02 08:05:03 +08:00
52 lines
1.8 KiB
Bash
52 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
check_kubeval() {
|
|
if ! command -v kubeval > /dev/null 2>&1; then
|
|
printf '\033[0;31m\U0001F6AB kubeval is not installed\033[0m'
|
|
printf ' Install it from https://github.com/instrumenta/kubeval/releases'
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
run_kubeval_chart() {
|
|
local -r chart_name="${1:?missing_chart_name}"
|
|
local -r chart_path="$(git rev-parse --show-toplevel)"/"$chart_name"
|
|
local test_failed=0
|
|
|
|
local -r ci_values_file_list=$(mktemp)
|
|
|
|
if [[ -d "$chart_path"/ci ]]; then
|
|
find "$chart_path"/ci -type f -regex ".*\.yaml" > "$ci_values_file_list"
|
|
fi
|
|
printf '\033[0;34m- Running kubeval in %s \033[0m\n' "$chart_name"
|
|
|
|
for values_file in "$chart_path"/values.yaml $(< "$ci_values_file_list"); do
|
|
if [[ ! -f "$values_file" ]];then
|
|
continue
|
|
fi
|
|
values_file_display=${chart_name}/${values_file#$chart_path/}
|
|
|
|
for options_str in "--strict" "--strict --openshift"; do
|
|
# Redirect to an output file so we create less verbosity
|
|
cmd_output_file=$(mktemp)
|
|
read -r -a opt_array <<< "$options_str"
|
|
# printf '\033[0;34m- Running helm template --values %s %s | kubeval %s \033[0m\n' "$values_file_display" "$chart_name" "${options_str}"
|
|
if ! helm template --values "$values_file" "$chart_path" | kubeval "${opt_array[@]}" > "$cmd_output_file" 2>&1; then
|
|
cat "$cmd_output_file"
|
|
printf '\033[0;31m\U0001F6AB helm template --values %s %s | kubeval %s failed.\033[0m\n' "$values_file_display" "$chart_name" "${options_str}"
|
|
test_failed=1
|
|
fi
|
|
rm "$cmd_output_file"
|
|
done
|
|
done
|
|
|
|
rm "$ci_values_file_list"
|
|
|
|
if [[ "$test_failed" = "1" ]]; then
|
|
false
|
|
else
|
|
printf '\033[0;32m\U00002705 Kubeval %s\n\033[0m' "$chart_name"
|
|
true
|
|
fi
|
|
}
|