Skip to content

Commit

Permalink
Add: validate simcore stack yml bash script - to be used in CI/CD (#441)
Browse files Browse the repository at this point in the history
* Add the file

* fixes

* Add version-pinned yq

* minor fixes

* Add comment

* Rename venv folder to .venv

---------

Co-authored-by: kaiser <[email protected]>
  • Loading branch information
mrnicegyu11 and kaiser authored Nov 17, 2023
1 parent eb8968e commit bc81258
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 3 deletions.
71 changes: 71 additions & 0 deletions scripts/deployments/validate_simcore_stack_yml.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/bash
set -o nounset
set -o pipefail
#
# This bash script expects the following environment variables to be set:
# - PREFIX_STACK_NAME: prefix of the stack name
#
export COMPOSE_FILE=simcore_stack.yml
export SETTINGS_BINARY_PATH=/home/scu/.venv/bin
#
export SERVICES_PREFIX=${PREFIX_STACK_NAME}
exit_code=0
# Download version-pinned yq binary
python -c "import urllib.request,os,sys,urllib; f = open(os.path.basename(sys.argv[1]), 'wb'); f.write(urllib.request.urlopen(sys.argv[1]).read()); f.close();" https://github.com/mikefarah/yq/releases/download/v4.29.2/yq_linux_amd64
mv yq_linux_amd64 yq
chmod +x yq
_yq=$(realpath ./yq)
export _yq
#
# start
#
for service in $($_yq e '.services | keys | .[]' ${COMPOSE_FILE})
do
export TARGETNAME=${service#"${SERVICES_PREFIX}"_}
# continue if the service == director since it doesnt have settings
if [ "${TARGETNAME}" == "director" ]; then
continue
fi
if [ "${TARGETNAME}" == "migration" ]; then
continue
fi
if [ "${TARGETNAME}" == "postgres" ]; then
continue
fi
if [ "${TARGETNAME}" == "rabbit" ]; then
continue
fi
if [ "${TARGETNAME}" == "redis" ]; then
continue
fi
if [ "${TARGETNAME}" == "traefik" ]; then
continue
fi
if [ "${TARGETNAME}" == "traefik_api" ]; then
continue
fi
if [ "${TARGETNAME}" == "whoami" ]; then
continue
fi
export TARGETFILE="simcore-service-${TARGETNAME}"
echo TARGETFILE="${TARGETFILE}"
echo "Assuming targetfile in ${SETTINGS_BINARY_PATH}/${TARGETFILE}"
echo "Checking ${SETTINGS_BINARY_PATH}/${TARGETFILE}"
if docker compose --file ${COMPOSE_FILE} run --rm "${service}" test -f "${SETTINGS_BINARY_PATH}"/"${TARGETFILE}" > /dev/null 2>&1; then
echo "FOUND_EXECUTABLE=${SETTINGS_BINARY_PATH}/$TARGETFILE"
export FOUND_EXECUTABLE="${SETTINGS_BINARY_PATH}/$TARGETFILE"
if docker compose --file ${COMPOSE_FILE} run --entrypoint "${FOUND_EXECUTABLE}" --rm "${service}" settings --as-json > /dev/null 2>&1; then
echo "SUCCESS: Validation of environment variables for ${service}"
else
echo "ERROR: Validation of environment variables for ${service} failed"
docker compose --file ${COMPOSE_FILE} run --entrypoint "${FOUND_EXECUTABLE}" --rm "${service}" settings --as-json
exit_code=1
fi
else
echo "WARN: Settings executable not found for ${service}"
fi


echo "--------------------------"
done
exit $exit_code
6 changes: 3 additions & 3 deletions services/graylog/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,11 @@ ${TEMP_COMPOSE}-aws: docker-compose.yml docker-compose.letsencrypt.dns.yml docke
.PHONY: configure
configure: .env ## Test is Graylog is online and configure Graylog inputs
@cd scripts;\
if [ ! -d "venv" ]; \
if [ ! -d ".venv" ]; \
then\
python3 -m venv venv;\
python3 -m venv .venv;\
fi;\
source venv/bin/activate;\
source .venv/bin/activate;\
pip install -r requirements.txt > /dev/null 2>&1;\
set -o allexport; \
source ../$<;\
Expand Down

0 comments on commit bc81258

Please sign in to comment.