Files
charts/githooks/functions/libhelmlint.sh
2020-12-23 18:19:16 +01:00

42 lines
1.4 KiB
Bash

#!/bin/bash
run_helm_lint_chart() {
local -r chart_name="${1:?missing_chart_name}"
local -r chart_path="$(git rev-parse --show-toplevel)"/"$chart_name"
local test_failed=0
printf '\033[0;34m- Running helm lint %s\n\033[0m' "$chart_name"
if ! helm lint "$chart_path"; then
printf '\033[0;31m\U0001F6AB helm lint %s failed.\n\n\033[0m' "$chart_name"
test_failed=1
fi
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\033[0;34m- Running helm template in %s \n\033[0m' "$chart_name"
for values_file in "$chart_path"/values.yaml $(< "$ci_values_file_list"); do
if [[ ! -f "$values_file" ]] || [[ "$values_file" = */bitnami/common/* ]];then
continue
fi
values_file_display=${values_file#$chart_path/}
if ! helm template --values "$values_file" "$chart_path" >> /dev/null; then
printf '\033[0;31m\U0001F6AB helm template --values %s %s failed.\n\n\033[0m' "$values_file_display" "$chart_path"
test_failed=1
fi
done
rm "$ci_values_file_list"
if [[ "$test_failed" = "1" ]]; then
false
else
printf '\033[0;32m\U00002705 helm lint and helm template %s\n\n\033[0m' "$chart_name"
true
fi
}