fix: deploy.sh bash 3 kompatibel (keine assoziativen Arrays)
All checks were successful
CI/CD / go-lint (push) Has been skipped
CI/CD / python-lint (push) Has been skipped
CI/CD / nodejs-lint (push) Has been skipped
CI/CD / test-go-ai-compliance (push) Successful in 32s
CI/CD / test-python-backend-compliance (push) Successful in 30s
CI/CD / test-python-document-crawler (push) Successful in 21s
CI/CD / test-python-dsms-gateway (push) Successful in 16s
CI/CD / validate-canonical-controls (push) Successful in 10s
CI/CD / Deploy (push) Successful in 2s
All checks were successful
CI/CD / go-lint (push) Has been skipped
CI/CD / python-lint (push) Has been skipped
CI/CD / nodejs-lint (push) Has been skipped
CI/CD / test-go-ai-compliance (push) Successful in 32s
CI/CD / test-python-backend-compliance (push) Successful in 30s
CI/CD / test-python-document-crawler (push) Successful in 21s
CI/CD / test-python-dsms-gateway (push) Successful in 16s
CI/CD / validate-canonical-controls (push) Successful in 10s
CI/CD / Deploy (push) Successful in 2s
macOS ships mit bash 3, declare -A wird nicht unterstuetzt. Ersetzt durch case-Funktion dir_to_service(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user