86 lines
2.2 KiB
Bash
86 lines
2.2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# build-changed.sh - Build and deploy only changed services
|
||
|
|
# Usage: ./build-changed.sh [service-name] or ./build-changed.sh --detect
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
REGISTRY="your-registry.com/nxtgauge"
|
||
|
|
VERSION=${VERSION:-$(git rev-parse --short HEAD)}
|
||
|
|
|
||
|
|
# Services list
|
||
|
|
SERVICES=(
|
||
|
|
"gateway:apps/gateway"
|
||
|
|
"users:apps/users"
|
||
|
|
"companies:apps/companies"
|
||
|
|
"job_seekers:apps/job_seekers"
|
||
|
|
"customers:apps/customers"
|
||
|
|
"photographers:apps/photographers"
|
||
|
|
"makeup_artists:apps/makeup_artists"
|
||
|
|
"tutors:apps/tutors"
|
||
|
|
"developers:apps/developers"
|
||
|
|
"video_editors:apps/video_editors"
|
||
|
|
"graphic_designers:apps/graphic_designers"
|
||
|
|
"social_media_managers:apps/social_media_managers"
|
||
|
|
"fitness_trainers:apps/fitness_trainers"
|
||
|
|
"catering_services:apps/catering_services"
|
||
|
|
"ugc_content_creators:apps/ugc_content_creators"
|
||
|
|
"employees:apps/employees"
|
||
|
|
"payments:apps/payments"
|
||
|
|
"cron:apps/cron"
|
||
|
|
)
|
||
|
|
|
||
|
|
build_service() {
|
||
|
|
local service=$1
|
||
|
|
local tag="${REGISTRY}/${service}:${VERSION}"
|
||
|
|
local latest="${REGISTRY}/${service}:latest"
|
||
|
|
|
||
|
|
echo "🔨 Building ${service}..."
|
||
|
|
|
||
|
|
docker build \
|
||
|
|
--build-arg SERVICE_NAME=${service} \
|
||
|
|
-f Dockerfile.optimized \
|
||
|
|
-t ${tag} \
|
||
|
|
-t ${latest} \
|
||
|
|
.
|
||
|
|
|
||
|
|
echo "📤 Pushing ${service}..."
|
||
|
|
docker push ${tag}
|
||
|
|
docker push ${latest}
|
||
|
|
|
||
|
|
echo "✅ ${service} built and pushed"
|
||
|
|
}
|
||
|
|
|
||
|
|
# If specific service provided
|
||
|
|
if [ "$1" != "--detect" ] && [ -n "$1" ]; then
|
||
|
|
build_service "$1"
|
||
|
|
exit 0
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Auto-detect changed services
|
||
|
|
if [ "$1" == "--detect" ]; then
|
||
|
|
echo "🔍 Detecting changed services..."
|
||
|
|
|
||
|
|
# Get changed files from last commit
|
||
|
|
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD)
|
||
|
|
|
||
|
|
# Check if shared crates changed
|
||
|
|
SHARED_CHANGED=false
|
||
|
|
if echo "$CHANGED_FILES" | grep -q "^crates/"; then
|
||
|
|
SHARED_CHANGED=true
|
||
|
|
echo "⚠️ Shared crates changed - will rebuild all services"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Check each service
|
||
|
|
for service_info in "${SERVICES[@]}"; do
|
||
|
|
IFS=':' read -r service path <<< "$service_info"
|
||
|
|
|
||
|
|
if [ "$SHARED_CHANGED" = true ] || echo "$CHANGED_FILES" | grep -q "^${path}/"; then
|
||
|
|
build_service "$service"
|
||
|
|
else
|
||
|
|
echo "⏭️ ${service} - no changes, skipping"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "🎉 Build complete!"
|