[SEBA-230]
add chart_version_check.sh verification script
improve failure messages in helmlint.sh
improve helmrepo.sh script to update index properly
Change-Id: I69e31a8671e9962252f2ef9a6b900bfe5df282a2
diff --git a/helmlint.sh b/helmlint.sh
index aabdca0..c068c28 100755
--- a/helmlint.sh
+++ b/helmlint.sh
@@ -22,9 +22,12 @@
# verify that we have helm installed
command -v helm >/dev/null 2>&1 || { echo "helm not found, please install it" >&2; exit 1; }
-echo "helmlint.sh, using helm version: $(helm version -c --short)"
+echo "# helmlint.sh, using helm version: $(helm version -c --short) #"
+# Collect success/failure, and list/types of failures
fail_lint=0
+failed_lint=""
+failed_req=""
# when not running under Jenkins, use current dir as workspace
WORKSPACE=${WORKSPACE:-.}
@@ -32,21 +35,27 @@
# cleanup repos if `clean` option passed as parameter
if [ "$1" = "clean" ]
then
- echo "Removing dependent charts"
- find "${WORKSPACE}" -name 'charts' -exec rm -rf {} \;
+ echo "Removing any downloaded charts"
+ find "${WORKSPACE}" -type d -name 'charts' -exec rm -rf {} \;
fi
+# now that $1 is checked, error on undefined vars
+set -u
+
+# loop on result of 'find -name Chart.yaml'
while IFS= read -r -d '' chart
do
chartdir=$(dirname "${chart}")
- # only update dependencies for profiles
+ echo "Checking chart: $chartdir"
+
+ # update dependencies for profiles/workflows, as they include TOSCA from required charts
if [[ $chartdir =~ xos-profiles || $chartdir =~ workflows ]] && [ -f "${chartdir}/requirements.yaml" ]
then
helm dependency update "${chartdir}"
fi
- # lint with values.yaml if it exists
+ # lint the chart (with values.yaml if it exists)
if [ -f "${chartdir}/values.yaml" ]; then
helm lint --strict --values "${chartdir}/values.yaml" "${chartdir}"
else
@@ -56,11 +65,34 @@
rc=$?
if [[ $rc != 0 ]]; then
fail_lint=1
+ failed_lint+="${chartdir} "
fi
+
+ # check that requirements are available if they're specified
+ if [ -f "${chartdir}/requirements.yaml" ]
+ then
+ echo "Chart has requirements.yaml, checking availability"
+ helm dependency update "${chartdir}"
+ rc=$?
+ if [[ $rc != 0 ]]; then
+ fail_lint=1
+ failed_req+="${chartdir} "
+ fi
+
+ # remove charts dir after checking for availability, as this chart might be
+ # required by other charts in the next loop
+ rm -rf "${chartdir}/charts"
+ fi
+
done < <(find "${WORKSPACE}" -name Chart.yaml -print0)
if [[ $fail_lint != 0 ]]; then
+ echo "# helmlint.sh Failure! #"
+ echo "Charts that failed to lint: $failed_lint"
+ echo "Charts with failures in requirements.yaml: $failed_req"
exit 1
fi
+echo "# helmlint.sh Success! - all charts linted and have valid requirements.yaml #"
+
exit 0