fleet/.github/scripts/helm-check-expected.sh
James Alseth 3d328db000
Add Helm chart (#250)
Providing a Helm chart makes it easier for users to deploy to Kubernetes.

I think this is good to go, and I've tested deploying to Kind and GKE using the GKE ingress, sql proxy, and managed certificate, but I haven't tested anything AWS related.
2021-02-01 15:46:01 -08:00

70 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eou pipefail
usage() {
echo "${0} <templated-deployment.yaml> 'LIST OF EXPECTED ENVS' 'LIST OF EXPECTED VOLUMES'"
}
TEMPLATED_DEPLOYMENT=${1}
if [ -z "${TEMPLATED_DEPLOYMENT}" ]; then
echo "Error: Missing path to templated deployment"
usage
exit 1
fi
EXPECTED_ENVS=${2}
if [ -z "${EXPECTED_ENVS}" ]; then
echo "Error: Missing space-separated list of expected environment variables"
usage
exit 1
fi
EXPECTED_VOLUMES=${3}
if [ -z "${EXPECTED_VOLUMES}" ]; then
echo "Error: Missing space-separated list of expected volumes"
usage
exit 1
fi
ALL_ENVS=$(yq eval 'select(.kind == "Deployment") | .spec.template.spec.containers[].env[].name' ${TEMPLATED_DEPLOYMENT})
ALL_VOLUME_MOUNTS=$(yq eval 'select(.kind == "Deployment") | .spec.template.spec.containers[].volumeMounts[].name' ${TEMPLATED_DEPLOYMENT})
ALL_VOLUMES=$(yq eval 'select(.kind == "Deployment") | .spec.template.spec.volumes[].name' ${TEMPLATED_DEPLOYMENT})
seen=0
for EE in ${EXPECTED_ENVS}; do
seen=0
for AE in ${ALL_ENVS}; do
if [ "${AE}" == "${EE}" ]; then
seen=1
echo "Expected env found: ${AE}"
break
fi
done
done
if [ ${seen} -eq 0 ]; then
echo "Error: not all expected envs were found"
exit 1
fi
for EV in ${EXPECTED_VOLUMES}; do
seen=0
for AV in ${ALL_VOLUMES}; do
if [ "${AV}" == "${EV}" ]; then
echo "Expected volume found: ${AV}"
break
fi
done
for AVM in ${ALL_VOLUME_MOUNTS}; do
if [ "${AVM}" == "${EV}" ]; then
seen=1
echo "Expected volume mount found: ${AVM}"
break
fi
done
done
if [ ${seen} -eq 0 ]; then
echo "Error: not all expected volumes and their mounts were found"
exit 1
fi