Files
nova/ctrl/deploy.sh
buenosairesam 1ae1456502
Some checks failed
ci/woodpecker/push/build Pipeline failed
update docs
2026-04-16 18:48:39 -03:00

104 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Deploy UNT (NOVA) to server
# Usage: ./ctrl/deploy.sh [rsync|sync|restart|push|edge]
#
# rsync — sync source, rebuild images on server, restart (bypass CI)
# sync — sync source only (no rebuild, no restart)
# restart — restart containers (no sync, no rebuild)
# push — build images locally, push to registry, deploy (avoids OOM on server)
# edge — pull latest images from registry and restart
#
# Note: code is baked into the image (no volume mounts), so code changes
# need a rebuild (rsync | edge). Config-only changes (docker-compose, .env
# already on server) can use `restart`.
set -e
cd "$(dirname "$0")/.."
SERVER="mcrn.ar"
REMOTE_DIR="~/unt"
do_sync() {
echo "=== Syncing source to $SERVER ==="
rsync -avz --exclude='.git' --exclude='node_modules' --exclude='.venv' \
--exclude='ui/app/dist' --exclude='__pycache__' \
--exclude='ctrl/edge/.env' \
--filter=':- .gitignore' \
. "$SERVER:$REMOTE_DIR/"
}
do_rebuild_and_restart() {
echo "=== Building and restarting on server ==="
ssh "$SERVER" << 'EOF'
cd ~/unt
docker build -t registry.mcrn.ar/unt/api:latest -f ctrl/Dockerfile.api .
docker build -t registry.mcrn.ar/unt/ui:latest -f ctrl/Dockerfile.ui .
cd ctrl/edge
[ -f .env ] || cp .env.example .env
docker compose up -d --remove-orphans --force-recreate
docker image prune -f
docker compose ps
EOF
}
do_restart() {
echo "=== Restarting containers on $SERVER ==="
ssh "$SERVER" << 'EOF'
cd ~/unt/ctrl/edge
docker compose up -d --remove-orphans --force-recreate
docker compose ps
EOF
}
case "${1:-rsync}" in
rsync)
do_sync
do_rebuild_and_restart
;;
sync)
do_sync
;;
restart)
do_restart
;;
push)
echo "=== Building images locally ==="
docker build -t registry.mcrn.ar/unt/api:latest -f ctrl/Dockerfile.api .
docker build -t registry.mcrn.ar/unt/ui:latest -f ctrl/Dockerfile.ui .
echo "=== Pushing to registry ==="
/home/mariano/wdir/ppl/ctrl/push-image.sh unt/api latest
/home/mariano/wdir/ppl/ctrl/push-image.sh unt/ui latest
echo "=== Pulling and restarting on $SERVER ==="
ssh "$SERVER" << 'EOF'
cd ~/unt/ctrl/edge
docker compose pull
docker compose up -d --remove-orphans --force-recreate
docker image prune -f
docker compose ps
EOF
;;
edge)
echo "=== Pulling latest images on $SERVER ==="
ssh "$SERVER" << 'EOF'
cd ~/unt/ctrl/edge
docker compose pull
docker compose up -d --remove-orphans --force-recreate
docker image prune -f
docker compose ps
EOF
;;
*)
echo "Usage: $0 [rsync|sync|restart|push|edge]"
exit 1
;;
esac
echo "=== Done ==="