diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1741ac3950d..d8218108136 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -91,7 +91,7 @@ jobs: env: AGE_ENCRYPTED_ASC_SECRETS: ${{ secrets.AGE_ENCRYPTED_ASC_SECRETS }} AGE_SECRET_KEY: ${{ secrets.AGE_SECRET_KEY }} - # These are set in the "Environment" specifc secrets + # Variable set from GitHub "Environment" secrets (AGE encrypted) # DOCKER_REGISTRY # MONGOHQ_URL # SENTRY_DSN @@ -109,11 +109,13 @@ jobs: # HOME_LOCATION # API_LOCATION # STRIPE_SECRET_KEY - # These are set in the static job above - STACK_NAME: ${{ needs.setup-jobs.outputs.tgt_env_short }}-api + # LOKI_URL + # Variables set from SetupJob DEPLOYMENT_VERSION: ${{ needs.build.outputs.tagname }} DEPLOYMENT_ENV: ${{ needs.setup-jobs.outputs.site_tld }} FCC_API_LOG_LEVEL: ${{ needs.setup-jobs.outputs.api_log_lvl }} + # Stack name + STACK_NAME: ${{ needs.setup-jobs.outputs.tgt_env_short }}-api run: | REMOTE_SCRIPT=" set -e @@ -151,29 +153,65 @@ jobs: } >> .env echo -e '\nLOG:Sourcing environment...' + REQUIRED_VARS=( + \"DOCKER_REGISTRY\" + \"MONGOHQ_URL\" + \"SENTRY_DSN\" + \"SENTRY_ENVIRONMENT\" + \"AUTH0_CLIENT_ID\" + \"AUTH0_CLIENT_SECRET\" + \"AUTH0_DOMAIN\" + \"JWT_SECRET\" + \"COOKIE_SECRET\" + \"COOKIE_DOMAIN\" + \"SES_ID\" + \"SES_SECRET\" + \"GROWTHBOOK_FASTIFY_API_HOST\" + \"GROWTHBOOK_FASTIFY_CLIENT_KEY\" + \"HOME_LOCATION\" + \"API_LOCATION\" + \"STRIPE_SECRET_KEY\" + \"LOKI_URL\" + \"DEPLOYMENT_VERSION\" + \"DEPLOYMENT_ENV\" + \"FCC_API_LOG_LEVEL\" + ) + while IFS='=' read -r key value; do if [[ -n \"\$key\" && ! \"\$key\" =~ ^# ]]; then export \"\${key}=\${value}\" fi done < .env - rm -rf .env - echo -e '\nLOG:Validating environment...' - if [[ -z \"\$DOCKER_REGISTRY\" || -z \"\$DEPLOYMENT_ENV\" || -z \"\$DEPLOYMENT_VERSION\" || -z \"\$MONGOHQ_URL\" || -z \"\$FCC_API_LOG_LEVEL\" ]]; then - echo \"Error: Missing required environment variables\" + MISSING_VARS=() + for var in \"\${REQUIRED_VARS[@]}\"; do + if [[ -z \"\${!var}\" ]]; then + MISSING_VARS+=(\"\$var\") + fi + done + + if [[ \${#MISSING_VARS[@]} -gt 0 ]]; then + echo \"ERROR: The following required environment variables are missing or empty:\" + for var in \"\${MISSING_VARS[@]}\"; do + echo \" - \$var\" + done exit 1 fi + + rm -rf .env + + echo -e '\nLOG:Validating deployment version...' if [[ \"\$DEPLOYMENT_VERSION\" != \"$DEPLOYMENT_VERSION\" ]]; then echo \"Error: Version mismatch. Expected: $DEPLOYMENT_VERSION, Got: \$DEPLOYMENT_VERSION\" exit 1 fi - env | grep -E 'DOMAIN|DEPLOYMENT' + env | grep -E 'DEPLOYMENT_VERSION' echo -e '\nLOG:Checking stack configuration...' CONFIG_OUTPUT=\"/dev/null\" if [[ \"\$FCC_API_LOG_LEVEL\" == \"debug\" ]]; then CONFIG_FILENAME=\"debug-docker-stack-config-\${DEPLOYMENT_VERSION}.yml\" - echo -e '\nLOG:Saving stack configuration to \$CONFIG_FILENAME for debugging...' + echo -e '\nLOG:Saving stack configuration for debugging...' CONFIG_OUTPUT=\"\$CONFIG_FILENAME\" fi docker stack config -c stack-api.yml > \$CONFIG_OUTPUT