fix: improve deployment script with error handling and cleanup enhancements
All checks were successful
Deploy Production / deploy (push) Successful in 3m41s

This commit is contained in:
Frank John Begornia
2025-12-19 22:27:54 +08:00
parent 2b5851420d
commit 0851a08d8f

View File

@@ -42,41 +42,45 @@ jobs:
cd /workspace/repo cd /workspace/repo
scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key slipmatz-web.tar.gz docker-compose.yml "$DEPLOY_USER@$DEPLOY_HOST:/tmp/" scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key slipmatz-web.tar.gz docker-compose.yml "$DEPLOY_USER@$DEPLOY_HOST:/tmp/"
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$DEPLOY_USER@$DEPLOY_HOST" " ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$DEPLOY_USER@$DEPLOY_HOST" '
DEPLOY_DIR='/var/www/apps/slipmatz-web' DEPLOY_DIR="/var/www/apps/slipmatz-web"
mkdir -p \$DEPLOY_DIR mkdir -p $DEPLOY_DIR
cd /tmp cd /tmp
docker load < slipmatz-web.tar.gz docker load < slipmatz-web.tar.gz
echo 'Removing old slipmatz-web images' echo "Removing old slipmatz-web images"
docker images | grep slipmatz-web | grep -v "\$(docker images slipmatz-web:latest -q)" | awk '{print \$3}' | xargs -r docker rmi -f || true CURRENT_IMAGE=$(docker images slipmatz-web:latest -q)
docker images | grep slipmatz-web | grep -v "$CURRENT_IMAGE" | awk "{print \$3}" | xargs -r docker rmi -f || true
cp docker-compose.yml \$DEPLOY_DIR/ cp docker-compose.yml $DEPLOY_DIR/
cd \$DEPLOY_DIR cd $DEPLOY_DIR
# .env file should already exist on server with all required variables echo "Checking .env file"
# Required: NUXT_PUBLIC_*, STRIPE_SECRET_KEY, etc. if [ ! -f .env ]; then
# If it doesn't exist, deployment will fail (this is intentional for security) echo "Error: .env file not found at $DEPLOY_DIR/.env"
exit 1
fi
docker compose down || true docker compose down || true
docker image prune -f docker image prune -f
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
docker network inspect crew-app-net >/dev/null 2>&1 || docker network create crew-app-net
export DOMAIN=slipmatz.com export DOMAIN=slipmatz.com
docker compose up -d docker compose up -d
sleep 10 sleep 10
rm -f /tmp/slipmatz-web.tar.gz /tmp/docker-compose.yml rm -f /tmp/slipmatz-web.tar.gz /tmp/docker-compose.yml
echo 'Aggressive Docker cleanup to reclaim space' echo "Aggressive Docker cleanup to reclaim space"
docker image prune -af --filter "until=24h" || true docker image prune -af --filter "until=24h" || true
docker container prune -f || true docker container prune -f || true
docker volume prune -f || true docker volume prune -f || true
docker builder prune -af --filter "until=48h" || true docker builder prune -af --filter "until=48h" || true
echo 'Docker space usage:' echo "Docker space usage:"
docker system df docker system df
echo 'Production deployment completed successfully!' echo "Production deployment completed successfully!"
echo 'Application available at: https://slipmatz.com' echo "Application available at: https://slipmatz.com"
" '
env: env:
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
DEPLOY_USER: ${{ secrets.DEPLOY_USER }} DEPLOY_USER: ${{ secrets.DEPLOY_USER }}