89 lines
2.2 KiB
Bash
Executable File
89 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# shellcheck disable=SC2034,SC2044
|
|
|
|
# DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
DIR="$(pwd)"
|
|
|
|
function display_help {
|
|
echo "./$(basename "$0") [ -d | --directory DIRECTORY ] [ -q | --quiet ] [ -h | --help | --vpc-keypair | --lab | --teardown | --redeploy | --clear-logs ] [ OPTIONAL ANSIBLE OPTIONS ]
|
|
Script to validate the manifests generated by Kustomize
|
|
Where:
|
|
-d | --directory DIRECTORY Base directory containing Kustomize overlays
|
|
-e | --enforce-all-schemas Enable enforcement of all schemas
|
|
-h | --help Display this help text
|
|
-sl | --schema-location Location containing schemas"
|
|
}
|
|
|
|
which kustomize && KUSTOMIZE_CMD="kustomize build"
|
|
|
|
KUSTOMIZE_CMD="${KUSTOMIZE_CMD:-oc kustomize}"
|
|
KUSTOMIZE_OPTIONS="--enable-helm"
|
|
IGNORE_MISSING_SCHEMAS="--ignore-missing-schemas"
|
|
SCHEMA_LOCATION="${DIR}/openshift-json-schema"
|
|
KUSTOMIZE_DIRS="${DIR}"
|
|
ERROR_COLOR='\033[0;31m'
|
|
NO_COLOR='\033[0m'
|
|
|
|
for i in "$@"
|
|
do
|
|
case $i in
|
|
-d=* | --directory=* )
|
|
KUSTOMIZE_DIRS="${i#*=}"
|
|
shift
|
|
;;
|
|
-e | --enforce-all-schemas )
|
|
shift
|
|
IGNORE_MISSING_SCHEMAS=""
|
|
shift
|
|
;;
|
|
-sl=* | --schema-location=* )
|
|
SCHEMA_LOCATION="${i#*=}"
|
|
shift
|
|
;;
|
|
-h | --help )
|
|
display_help
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
errors=0
|
|
|
|
for i in $(find "${KUSTOMIZE_DIRS}" -name "kustomization.yaml" -exec dirname {} \;)
|
|
do
|
|
echo
|
|
echo "Validating $i"
|
|
echo
|
|
|
|
if [ -f "$i/.skip_validation" ]; then
|
|
echo "Skipping validation due to .skip_validation marker file"
|
|
continue
|
|
fi
|
|
|
|
KUSTOMIZE_BUILD_OUTPUT=$(${KUSTOMIZE_CMD} "$i" $KUSTOMIZE_OPTIONS)
|
|
|
|
build_response=$?
|
|
|
|
if [ $build_response -ne 0 ]; then
|
|
>&2 echo -e "${ERROR_COLOR}Error building $i${NO_COLOR}"
|
|
errors=$((errors + 1))
|
|
fi
|
|
|
|
# echo "$KUSTOMIZE_BUILD_OUTPUT" | kubeval ${IGNORE_MISSING_SCHEMAS} --schema-location="file://${SCHEMA_LOCATION}" --force-color
|
|
|
|
# validation_response=$?
|
|
|
|
# if [ $validation_response -ne 0 ]; then
|
|
# echo "Error validating $i"
|
|
# exit 1
|
|
# fi
|
|
done
|
|
|
|
echo
|
|
if [ $errors -ne 0 ]; then
|
|
echo -e "${ERROR_COLOR}$errors Errors occurred, see logs${NO_COLOR}"
|
|
exit 1
|
|
else
|
|
echo "Manifests successfully validated!"
|
|
fi
|