From c56bccaedf55e7bb669a11cb759687ab0d08de36 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Wed, 25 Mar 2026 08:19:38 +0100 Subject: [PATCH] fix: deploy.sh bash 3 kompatibel (keine assoziativen Arrays) macOS ships mit bash 3, declare -A wird nicht unterstuetzt. Ersetzt durch case-Funktion dir_to_service(). Co-Authored-By: Claude Opus 4.6 --- scripts/deploy.sh | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/scripts/deploy.sh b/scripts/deploy.sh index e5baf7b..88f8128 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -25,18 +25,23 @@ HEALTH_ENDPOINTS=( HEALTH_INTERVAL=20 HEALTH_TIMEOUT=300 # 5 minutes -# Map top-level directories to docker-compose service names -declare -A DIR_TO_SERVICE=( - [admin-compliance]=admin-compliance - [backend-compliance]=backend-compliance - [ai-compliance-sdk]=ai-compliance-sdk - [developer-portal]=developer-portal - [compliance-tts-service]=compliance-tts-service - [document-crawler]=document-crawler - [dsms-node]=dsms-node - [dsms-gateway]=dsms-gateway - [docs-src]=docs -) +# Map top-level directory to docker-compose service name +dir_to_service() { + case "$1" in + admin-compliance) echo "admin-compliance" ;; + backend-compliance) echo "backend-compliance" ;; + ai-compliance-sdk) echo "ai-compliance-sdk" ;; + developer-portal) echo "developer-portal" ;; + compliance-tts-service) echo "compliance-tts-service" ;; + document-crawler) echo "document-crawler" ;; + dsms-node) echo "dsms-node" ;; + dsms-gateway) echo "dsms-gateway" ;; + docs-src) echo "docs" ;; + *) echo "" ;; + esac +} + +ALL_SERVICES="admin-compliance backend-compliance ai-compliance-sdk developer-portal compliance-tts-service document-crawler dsms-node dsms-gateway docs" # --- Helpers --- info() { printf "\033[1;34m[INFO]\033[0m %s\n" "$*"; } @@ -60,10 +65,9 @@ info "Detecting changed services since last deploy..." REMOTE_HEAD=$(ssh "${MAC_MINI}" "git -C ${PROJECT_DIR} rev-parse HEAD" 2>/dev/null || echo "") LOCAL_HEAD=$(git rev-parse HEAD) -CHANGED_SERVICES=() +CHANGED_SERVICES="" if [ -z "${REMOTE_HEAD}" ] || [ "${REMOTE_HEAD}" = "${LOCAL_HEAD}" ]; then - # Cannot determine diff or already up to date — check last 1 commit info "Cannot determine remote HEAD or already equal. Checking last commit diff..." CHANGED_DIRS=$(git diff --name-only HEAD~1 HEAD 2>/dev/null | cut -d'/' -f1 | sort -u) else @@ -71,28 +75,26 @@ else fi for dir in ${CHANGED_DIRS}; do - svc="${DIR_TO_SERVICE[${dir}]:-}" + svc=$(dir_to_service "${dir}") if [ -n "${svc}" ]; then - CHANGED_SERVICES+=("${svc}") + CHANGED_SERVICES="${CHANGED_SERVICES} ${svc}" fi done # Also check if docker-compose.yml itself changed if echo "${CHANGED_DIRS}" | grep -q "^docker-compose"; then info "docker-compose.yml changed — will rebuild all services." - CHANGED_SERVICES=() - for svc in "${DIR_TO_SERVICE[@]}"; do - CHANGED_SERVICES+=("${svc}") - done + CHANGED_SERVICES="${ALL_SERVICES}" fi -if [ ${#CHANGED_SERVICES[@]} -eq 0 ]; then +# Deduplicate +CHANGED_SERVICES=$(echo "${CHANGED_SERVICES}" | tr ' ' '\n' | sort -u | tr '\n' ' ' | xargs) + +if [ -z "${CHANGED_SERVICES}" ]; then warn "No service directories changed. Nothing to rebuild on Mac Mini." info "Coolify will still deploy from the gitea push." else - # Deduplicate - CHANGED_SERVICES=($(printf '%s\n' "${CHANGED_SERVICES[@]}" | sort -u)) - info "Changed services: ${CHANGED_SERVICES[*]}" + info "Changed services: ${CHANGED_SERVICES}" # --- Step 3: Pull code on Mac Mini --- info "Pulling latest code on Mac Mini..." @@ -100,14 +102,12 @@ else ok "Code pulled on Mac Mini." # --- Step 4: Rebuild + restart changed services --- - SERVICES_STR="${CHANGED_SERVICES[*]}" - - info "Building changed services on Mac Mini: ${SERVICES_STR}" - ssh "${MAC_MINI}" "${DOCKER} compose -f ${COMPOSE_FILE} build ${SERVICES_STR}" + info "Building changed services on Mac Mini: ${CHANGED_SERVICES}" + ssh "${MAC_MINI}" "${DOCKER} compose -f ${COMPOSE_FILE} build ${CHANGED_SERVICES}" ok "Build complete." - info "Restarting changed services on Mac Mini: ${SERVICES_STR}" - ssh "${MAC_MINI}" "${DOCKER} compose -f ${COMPOSE_FILE} up -d --no-deps ${SERVICES_STR}" + info "Restarting changed services on Mac Mini: ${CHANGED_SERVICES}" + ssh "${MAC_MINI}" "${DOCKER} compose -f ${COMPOSE_FILE} up -d --no-deps ${CHANGED_SERVICES}" ok "Services restarted on Mac Mini." fi