diff --git a/deploy.sh b/deploy.sh index f731e8b..739539a 100755 --- a/deploy.sh +++ b/deploy.sh @@ -1,4 +1,30 @@ #!/bin/bash -docker stack deploy \ - -c docker-compose-deploy.yml \ - utility-bills-tracker +set -euo pipefail + +COMPOSE_FILE="docker-compose-deploy.yml" +PACKAGE_JSON="package.json" +STACK_NAME=${STACK_NAME:-utility-bills-tracker} + +if [ ! -f "$PACKAGE_JSON" ]; then + echo "package.json not found" >&2 + exit 1 +fi + +# Extract version (prefer jq if available) +if command -v jq >/dev/null 2>&1; then + APP_VERSION=$(jq -r '.version' "$PACKAGE_JSON") +else + APP_VERSION=$(grep -E '"version"' "$PACKAGE_JSON" | head -1 | sed -E 's/.*"version"[[:space:]]*:[[:space:]]*"([^"]+)".*/\1/') +fi + +if [ -z "${APP_VERSION:-}" ] || [ "$APP_VERSION" = "null" ]; then + echo "Could not determine app version from package.json" >&2 + exit 2 +fi + +echo "Deploying $STACK_NAME with image version: $APP_VERSION" + +# Pass IMAGE_VERSION env var for compose variable substitution +IMAGE_VERSION="$APP_VERSION" docker stack deploy \ + -c "$COMPOSE_FILE" \ + "$STACK_NAME" diff --git a/docker-compose-deploy.yml b/docker-compose-deploy.yml index 5420e14..290ba21 100644 --- a/docker-compose-deploy.yml +++ b/docker-compose-deploy.yml @@ -13,7 +13,7 @@ networks: services: web-app: - image: utility-bills-tracker:1.56.0 + image: utility-bills-tracker:${IMAGE_VERSION} networks: - traefik-network - mongo-network